Interactuación con el mapa (Android SDK)
En este artículo se muestra cómo usar el administrador de eventos de mapa.
Nota:
Retirada de Android SDK de Azure Maps
El SDK nativo de Azure Maps para Android ya está en desuso y se retirará el 31 de marzo de 2025. Para evitar interrupciones del servicio, migre al SDK web de Azure Maps antes del 31 de marzo de 2025. Para obtener más información, consulta la Guía de migración del SDK de Maps para Android.
Interacción con el mapa
El mapa administra todos los eventos por medio de su propiedad events
. En la siguiente tabla se muestran los eventos de mapa admitidos.
Evento | Formato del controlador de eventos | Descripción |
---|---|---|
OnCameraIdle |
() |
Se genera después del último fotograma representado antes de que el mapa entre en un estado "inactivo":
|
OnCameraMove |
() |
Se genera repetidamente durante una transición animada desde una vista a otra, como resultado de la interacción del usuario o los métodos. |
OnCameraMoveCanceled |
() |
Se genera cuando se cancela una solicitud de movimiento a la cámara. |
OnCameraMoveStarted |
(int reason) |
Se genera justo antes de que el mapa inicie una transición desde una vista a otra, como resultado de la interacción del usuario o los métodos. El argumento reason del cliente de escucha de eventos devuelve un valor entero que proporciona detalles sobre cómo se inició el movimiento de la cámara. A continuación, se muestra la lista de posibles motivos:
|
OnClick |
(double lat, double lon): boolean |
Se inicia cuando el mapa se presiona y se libera en el mismo punto del mapa. Este controlador de eventos devuelve un valor booleano que indica si el evento se debe consumir o se debe seguir pasando a otros agentes de escucha de eventos. |
OnFeatureClick |
(List<Feature>): boolean |
Se inicia cuando el mapa se presiona y se libera en el mismo punto de una característica. Este controlador de eventos devuelve un valor booleano que indica si el evento se debe consumir o se debe seguir pasando a otros agentes de escucha de eventos. |
OnLayerAdded |
(Layer layer) |
Se inicia cuando se agrega una capa al mapa. |
OnLayerRemoved |
(Layer layer) |
Se inicia cuando se quita una capa del mapa. |
OnLoaded |
() |
Se genera inmediatamente después de que se hayan descargado todos los recursos necesarios y de que se haya producido la primera representación visualmente completa del mapa. |
OnLongClick |
(double lat, double lon): boolean |
Se inicia cuando el mapa se presiona, se mantiene durante un momento y, a continuación, se libera en el mismo punto del mapa. Este controlador de eventos devuelve un valor booleano que indica si el evento se debe consumir o se debe seguir pasando a otros agentes de escucha de eventos. |
OnLongFeatureClick |
(List<Feature>): boolean |
Se inicia cuando el mapa se presiona, se mantiene durante un momento y, a continuación, se libera en el mismo punto de una característica. Este controlador de eventos devuelve un valor booleano que indica si el evento se debe consumir o se debe seguir pasando a otros agentes de escucha de eventos. |
OnReady |
(AzureMap map) |
Se genera cuando el mapa se carga inicialmente, la orientación cambia, los recursos de mapa mínimos necesarios se cargan y el mapa está listo para interactuar mediante programación. |
OnSourceAdded |
(Source source) |
Se inicia cuando se agrega DataSource o VectorTileSource al mapa. |
OnSourceRemoved |
(Source source) |
Se inicia cuando se quita DataSource o VectorTileSource del mapa. |
OnStyleChange |
() |
Se inicia cuando se carga o cambia el estilo del mapa. |
En el siguiente código se muestra cómo agregar los eventos OnClick
, OnFeatureClick
y OnCameraMove
al mapa.
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.
})
Para obtener más información, consulte en Navegación por el mapa cómo interactuar con el mapa y desencadenar eventos.
Delimitación de los eventos de características a una capa
Al agregar los eventos OnFeatureClick
o OnLongFeatureClick
al mapa, se puede pasar un id. de capa o una instancia de capa como segundo parámetro. Cuando se pasa una capa, se genera un evento si ocurre en esa capa. Los eventos que se limitan a determinadas capas se admiten en las capas de símbolos, burbujas, líneas y polígonos.
//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
)
Pasos siguientes
Consulte los siguientes artículos para obtener ejemplos de código completo: