Freigeben über


Interagieren mit der Karte (Android SDK)

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

Hinweis

Auslauf des Azure Maps Android SDK

Das Azure Maps Native SDK für Android ist jetzt veraltet und wird am 31.03.2025 eingestellt. Um Dienstunterbrechungen zu vermeiden, migrieren Sie bis zum 31.03.2025 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. In der folgenden Tabelle sind die unterstützten Kartenereignisse aufgelistet.

Ereignis Ereignishandlerformat BESCHREIBUNG
OnCameraIdle ()

Wird ausgelöst, nachdem der letzte Frame gerendert wurde und bevor die Karte in den Zustand „Leerlauf“ versetzt wird:

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

OnCameraMove () Wird während eines animierten Übergangs von einer Ansicht zu einer anderen wiederholt ausgelöst, entweder als Ergebnis einer Benutzerinteraktion oder von Methoden.
OnCameraMoveCanceled () Wird ausgelöst, wenn eine Anforderung zum Bewegen der Kamera abgebrochen wurde.
OnCameraMoveStarted (int reason) Wird ausgelöst, kurz bevor die Karte den Übergang von einer Ansicht zu einer anderen beginnt, entweder als Ergebnis einer Benutzerinteraktion oder von Methoden. Das Argument reason des Ereignislistener gibt einen ganzzahligen Wert zurück, der Aufschluss darüber gibt, wie die Kamerabewegung initiiert wurde. Im Folgenden finden Sie eine Liste möglicher Gründe:
  • 1: Geste
  • 2: Entwickleranimation
  • 3: API-Animation
OnClick (double lat, double lon): boolean Wird ausgelöst, wenn die Karte an derselben Stelle gedrückt und wieder losgelassen wird. Dieser Ereignishandler gibt einen booleschen Wert zurück, der angibt, ob das Ereignis verarbeitet oder an andere Ereignislistener weitergeleitet werden soll.
OnFeatureClick (List<Feature>): boolean Wird ausgelöst, wenn die Karte an derselben Stelle eines Features gedrückt und wieder losgelassen wird. Dieser Ereignishandler gibt einen booleschen Wert zurück, der angibt, ob das Ereignis verarbeitet oder an andere Ereignislistener weitergeleitet werden soll.
OnLayerAdded (Layer layer) Wird ausgelöst, wenn der Karte eine Ebene hinzugefügt wird.
OnLayerRemoved (Layer layer) Wird ausgelöst, wenn aus der Karte eine Ebene entfernt wird.
OnLoaded () Wird sofort ausgelöst, nachdem alle erforderlichen Ressourcen heruntergeladen wurden und die Karte zum ersten Mal visuell vollständig gerendert wurde.
OnLongClick (double lat, double lon): boolean 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. Dieser Ereignishandler gibt einen booleschen Wert zurück, der angibt, ob das Ereignis verarbeitet oder an andere Ereignislistener weitergeleitet werden soll.
OnLongFeatureClick (List<Feature>): boolean 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. Dieser Ereignishandler gibt einen booleschen Wert zurück, der angibt, ob das Ereignis verarbeitet oder an andere Ereignislistener weitergeleitet werden soll.
 OnReady                (AzureMap map)       Wird ausgelöst, wenn die Karte zum ersten Mal geladen wird, sich die Ausrichtung ändert, die mindestens erforderliche Zuordnungsressourcen geladen werden und die Karte bereit für die programmgesteuerte Interaktion ist. 
OnSourceAdded (Source source) Wird ausgelöst, wenn der Karte DataSource oder VectorTileSource hinzugefügt wird.
OnSourceRemoved (Source source) Wird ausgelöst, wenn aus der Karte DataSource oder VectorTileSource entfernt wird.
OnStyleChange () Wird ausgelöst, wenn der Kartenstil geladen oder geändert wird.

Der folgende Code zeigt, wie die OnClick-, OnFeatureClick- und OnCameraMove-Ereignisse der Karte hinzugefügt werden.

map.events.add((OnClick) (lat, lon) -> {
    //Map clicked.

    //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
    return true;
});

map.events.add((OnFeatureClick) (features) -> {
    //Feature clicked.

    //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
    return true;
});

map.events.add((OnCameraMove) () -> {
    //Map camera moved.
});
map.events.add(OnClick { lat: Double, lon: Double -> 
    //Map clicked.

    //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
    return false
})

map.events.add(OnFeatureClick { features: List<Feature?>? -> 
    //Feature clicked.

    //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
    return false
})

map.events.add(OnCameraMove {
    //Map camera moved.
})

Weitere Informationen zur Interaktion mit den Karten- und Auslöserereignissen finden Sie in der Dokumentation Navigieren auf einer Karte.

Beschränken von Featureereignissen auf eine Ebene

Wenn die Ereignisse OnFeatureClick oder OnLongFeatureClick der Karte hinzugefügt werden, kann eine Ebeneninstanz oder Ebenen-ID als zweiter Parameter übergeben werden. Wenn eine Ebene übergeben wird, wird ein Ereignis ausgelöst, wenn es auf dieser Ebene auftritt. Auf Ebenen bezogene Ereignisse werden von Symbol-, Blasen-, Linien- und Polygonebenen unterstützt.

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

//Add data to the data source.
source.add(Point.fromLngLat(0, 0));

//Create a layer and add it to the map.
BubbleLayer layer = new BubbleLayer(source);
map.layers.add(layer);

//Add a feature click event to the map and pass the layer ID to limit the event to the specified layer.
map.events.add((OnFeatureClick) (features) -> {
    //One or more features clicked.

    //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
    return true;
}, layer);

//Add a long feature click event to the map and pass the layer ID to limit the event to the specified layer.
map.events.add((OnLongFeatureClick) (features) -> {
    //One or more features long clicked.

    //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
    return true;
}, layer);
//Create a data source.
val source = DataSource()
map.sources.add(source)

//Add data to the data source.
source.add(Point.fromLngLat(0, 0))

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

//Add a feature click event to the map and pass the layer ID to limit the event to the specified layer.
map.events.add(
    OnFeatureClick { features: List<Feature?>? -> 
        //One or more features clicked.

        //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
        return false
    },
    layer
)

//Add a long feature click event to the map and pass the layer ID to limit the event to the specified layer.
map.events.add(
    OnLongFeatureClick { features: List<Feature?>? -> 
         //One or more features long clicked.

        //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
        return false
    },
    layer
)

Nächste Schritte

Die folgenden Artikel enthalten vollständige Codebeispiele: