Condividi tramite


Interagire con la mappa (Android SDK)

Questo articolo illustra come usare il gestore eventi di Mappe.

Nota

Ritiro di Android SDK di Mappe di Azure

Azure Maps Native SDK per Android è ora deprecato e verrà ritirato il 3/31/25. Per evitare interruzioni del servizio, eseguire la migrazione al Web SDK di Mappe di Azure entro il 31/3/25. Per altre informazioni, vedere La guida alla migrazione di Android SDK di Mappe di Azure.

Interazione con la mappa

La mappa gestisce tutti gli eventi tramite la relativa proprietà events. Nella tabella seguente sono elencati gli eventi della mappa supportati.

Event Formato del gestore eventi Descrizione
OnCameraIdle ()

Viene generato dopo il rendering dell'ultimo frame prima che la mappa passi in stato "inattivo" in questi casi:

  • Non sono in corso transizioni della fotocamera.
  • Sono stati caricati tutte le tessere attualmente richieste.
  • Sono state completate tutte le animazioni di dissolvenza/transizione.

OnCameraMove () Viene generato ripetutamente durante una transizione animata da una vista a un'altra, come risultato dell'interazione utente o dei metodi.
OnCameraMoveCanceled () Si attiva quando una richiesta di movimento alla fotocamera è stata annullata.
OnCameraMoveStarted (int reason) Viene generato immediatamente prima che la mappa inizi una transizione da una vista a un'altra, come risultato dell'interazione utente o dei metodi. L'argomento reason del listener di eventi restituisce un valore intero che fornisce informazioni dettagliate sulla modalità di avvio del movimento della fotocamera. L'elenco seguente illustra i possibili motivi:
  • 1: Movimento
  • 2: Animazione per sviluppatori
  • 3: Animazione API
OnClick (double lat, double lon): boolean Viene generato quando la mappa viene premuta e rilasciata nello stesso punto della mappa. Questo gestore eventi restituisce un valore booleano che indica se l'evento deve essere utilizzato o passato ulteriormente ad altri listener di eventi.
OnFeatureClick (List<Feature>): boolean Viene generato quando la mappa viene premuta e rilasciata nello stesso punto di una funzionalità. Questo gestore eventi restituisce un valore booleano che indica se l'evento deve essere utilizzato o passato ulteriormente ad altri listener di eventi.
OnLayerAdded (Layer layer) Viene generato quando un livello viene aggiunto alla mappa.
OnLayerRemoved (Layer layer) Viene generato quando un livello viene rimosso dalla mappa.
OnLoaded () Viene generato immediatamente dopo il download di tutte le risorse necessarie e il primo rendering visivo completo della mappa.
OnLongClick (double lat, double lon): boolean Viene generato quando la mappa viene premuta, tenuta per un momento e poi rilasciata nello stesso punto sulla mappa. Questo gestore eventi restituisce un valore booleano che indica se l'evento deve essere utilizzato o passato ulteriormente ad altri listener di eventi.
OnLongFeatureClick (List<Feature>): boolean Viene generato quando la mappa viene premuta, tenuta per un momento e poi rilasciata nello stesso punto di una caratteristica. Questo gestore eventi restituisce un valore booleano che indica se l'evento deve essere utilizzato o passato ulteriormente ad altri listener di eventi.
 OnReady                (AzureMap map)       Viene generato quando la mappa viene caricata inizialmente, l'orientamento cambia, il carico minimo necessario delle risorse della mappa e la mappa è pronta per l'interazione a livello di codice. 
OnSourceAdded (Source source) Viene generato quando viene aggiunto alla mappa un oggetto DataSource o VectorTileSource.
OnSourceRemoved (Source source) Viene generato quando viene rimosso dalla mappa un oggetto DataSource o VectorTileSource.
OnStyleChange () Viene generato quando lo stile della mappa viene caricato o modificato.

Nel codice seguente viene illustrato come aggiungere gli eventi OnClick, OnFeatureClicke OnCameraMove alla mappa.

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.
})

Per altre informazioni, vedere la documentazione Esplorazione della mappa su come interagire con la mappa e attivare gli eventi.

Definire l'ambito degli eventi di funzionalità al livello

Quando gli eventi OnFeatureClick o OnLongFeatureClick vengono aggiunti alla mappa, è possibile passare un'istanza del livello o un ID livello come secondo parametro. Quando viene passato un livello, viene generato un evento se si verifica su tale livello. Gli eventi con ambito a livelli sono supportati dai livelli simbolo, bolla, linea e poligono.

//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
)

Passaggi successivi

Per esempi di codice completi, vedere gli articoli seguenti: