Freigeben über


Mit der Karte im iOS SDK interagieren (Vorschau)

In diesem Artikel erfahren Sie, wie Sie den Kartenereignis-Manager verwenden.

Hinweis

Einstellung des Azure Maps iOS SDK

Das Azure Maps Native SDK für iOS ist jetzt veraltet und wird am 31.3.25 eingestellt. Um Dienstunterbrechungen zu vermeiden, migrieren Sie bis zum 31.3.25 zum Azure Maps Web SDK. Weitere Informationen finden Sie im Migrationshandbuch zum Azure Maps iOS SDK.

Interaktion mit der Karte

Die Karte verwaltet alle Ereignisse über ihre events-Eigenschaft, die Delegaten akzeptiert, die dem AzureMapDelegate-Protokoll entsprechen. In der folgenden Tabelle sind alle unterstützten Kartenereignisse aufgeführt, die als Methoden des AzureMapDelegate-Protokolls dargestellt werden.

Methode Beschreibung
azureMapCameraIsIdle(_ map: AzureMap)

Wird nach dem Rendern des letzten Frames ausgelöst, bevor die Karte in den "Leerlauf"-Zustand wechselt:

  • Es werden keine Kameraübergänge ausgeführt.
  • Alle zurzeit angeforderten Kacheln wurden geladen.
  • Alle Ausblend-/Übergangsanimationen wurden abgeschlossen.

azureMapCameraIsMoving(_ map: AzureMap) Wird während eines animierten Übergangs von einer Ansicht zur anderen wiederholt ausgelöst. Dies kann das Ergebnis einer Benutzerinteraktion oder einer Methode sein.
azureMapCameraMoveWasCanceled(_ map: AzureMap) Wird ausgelöst, wenn eine Bewegungsanforderung an die Kamera abgebrochen wird.
azureMap(_ map: AzureMap, cameraMoveIsStarted reason: CameraChangeReason) Wird ausgelöst, kurz bevor die Karte beginnt, von einer Ansicht in eine andere zu wechseln. Dies kann programmgesteuert oder als Folge einer Benutzerinteraktion auftreten. Der Parameter reason ist ein Optionssatz, der Details darüber liefert, wie die Kamerabewegung eingeleitet wurde. Im Folgenden finden Sie eine Liste möglicher Gründe:
  • Unbekannt
  • Programmgesteuert
  • Nord zurücksetzen
  • Schwenkengeste
  • Pinch-Geste
  • Dreh-Geste
  • Zoom-In Geste
  • Zoom-Out Geste
  • Geste zum Zoomen mit einem Finger
  • Neigungsgeste
  • Übergang abgebrochen
azureMap(_ map: AzureMap, didTapAt location: CLLocationCoordinate2D) Wird ausgelöst, wenn die Karte an derselben Stelle gedrückt und wieder losgelassen wird.
azureMap(_ map: AzureMap, didTapOn features: [Feature]) Wird ausgelöst, wenn die Karte an derselben Stelle eines Features gedrückt und wieder losgelassen wird.
azureMap(_ map: AzureMap, didAddLayer layer: Layer) Wird ausgelöst, wenn der Karte eine Ebene hinzugefügt wird.
azureMap(_ map: AzureMap, didRemoveLayer layer: Layer) Wird ausgelöst, wenn aus der Karte eine Ebene entfernt wird.
azureMapWillLoad(_ map: AzureMap) Wird ausgelöst, bevor Ressourcen heruntergeladen werden, die für das Rendering erforderlich sind.
azureMapDidLoad(_ map: AzureMap) Wird ausgelöst, nachdem Ressourcen heruntergeladen wurden und das erste visuelle Rendering der Karte abgeschlossen ist.
azureMap(_ map: AzureMap, didLongPressAt location: CLLocationCoordinate2D) Wird ausgelöst, wenn die Karte gedrückt wird, für einen Moment gehalten und dann an derselben Stelle auf der Karte wieder losgelassen wird.
azureMap(_ map: AzureMap, didLongPressOn features: [Feature]) Wird ausgelöst, wenn die Karte gedrückt wird, für einen Moment gehalten und dann an derselben Stelle auf der Karte wieder losgelassen wird.
azureMapIsReady(_ map: AzureMap) Wird ausgelöst, wenn folgende Bedingungen erfüllt sind:
  • Die Karte wird zunächst geladen
  • Die App-Ausrichtung ändert sich
  • Die mindestens erforderlichen Zuordnungsressourcen beenden das Laden.
  • Die Karte kann programmgesteuert interagiert werden.
azureMap(_ map: AzureMap, didAddSource source: Source) Wird ausgelöst, wenn der Karte DataSource oder VectorTileSource hinzugefügt wird.
azureMap(_ map: AzureMap, didRemoveSource source: Source) Wird ausgelöst, wenn aus der Karte DataSource oder VectorTileSource entfernt wird.
azureMapStyleDidChange(_ map: AzureMap) Wird ausgelöst, wenn der Kartenstil geladen oder geändert wird.

Der folgende Code zeigt, wie die azureMap(_ map: AzureMap, didTapAt location: CLLocationCoordinate2D)-, azureMap(_ map: AzureMap, didTapOn features: [Feature])- und azureMapCameraIsMoving(_ map: AzureMap)-Ereignisse der Karte hinzugefügt werden.

class ShowSimpleEventsHandlingViewController: UIViewController, AzureMapDelegate {

    // Other Setup...

    func setupMapControl() {
        mapControl.onReady { map in

            // Add the delegate to the map to respond to events.
            map.events.addDelegate(self)
        }
    }

    func azureMap(_ map: AzureMap, didTapAt location: CLLocationCoordinate2D) {
        // Map clicked.
    }

    func azureMap(_ map: AzureMap, didTapOn features: [Feature]) {
        // Feature clicked.
    }

    func azureMapCameraIsMoving(_ map: AzureMap) {
        // Map camera moved.
    }
}

Weitere Informationen finden Sie im Artikel Navigieren auf der Karte zur Interaktion mit der Karte und zum Auslösen von Ereignissen.

Beschränken von Featureereignissen auf eine Ebene

Beim Hinzufügen eines Delegaten zur Karte können Ebenen-IDs als zweiter Parameter übergeben werden. Beim Übergeben einer Ebene wird das Ereignis nur ausgelöst, wenn es auf dieser Ebene auftritt. Auf Ebenen bezogene Ereignisse werden von Symbol-, Blasen-, Linien- und Polygonebenen unterstützt.

class ShowScopedEventsHandlingViewController: UIViewController, AzureMapDelegate {
    
    // Other Setup...

    func setupMapControl() {
        mapControl.onReady { map in

            // Create a data source.
            let source = DataSource()
            map.sources.add(source)

            // Add data to the data source.
            source.add(geometry: Point(CLLocationCoordinate2D(latitude: 0, longitude: 0)))

            // Create a layer and add it to the map.
            let layer = BubbleLayer(source: source)
            map.layers.addLayer(layer)

            // Add the delegate to the map to respond to events.
            map.events.addDelegate(self, for: [layer.id])
        }
    }

    func azureMap(_ map: AzureMap, didTapOn features: [Feature]) {
        // One or more features tapped.
    }

    func azureMap(_ map: AzureMap, didLongPressOn features: [Feature]) {
        // One or more features long pressed.
    }
}

Weitere Informationen

Die folgenden Artikel enthalten vollständige Codebeispiele: