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 para 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":

  • No hay transiciones de cámara en curso.
  • Todos los elementos solicitados actualmente se han cargado.
  • Todas las animaciones de fundido y transición se han completado.

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:
  • 1: Gesto
  • 2: Animación de desarrollador
  • 3: Animación de API
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: