Interagir com o mapa (SDK do Android)

Este artigo mostra como usar o gerente de eventos de mapas.

Observação

Desativação do SDK do Android do Azure Mapas

O SDK Nativo do Azure Mapas para Android já foi preterido e será desativado em 31/03/25. Para evitar interrupções de serviço, migre para o SDK da Web do Azure Mapas até 31/03/25. Para obter mais informações, confira O guia de migração do SDK do Android do Azure Mapas.

Interagir com o mapa

O mapa gerencia todos os eventos por meio da propriedade events. A tabela a seguir lista os eventos de mapa suportados.

Evento Formato do manipulador de eventos Descrição
OnCameraIdle ()

É acionado após o último quadro renderizado antes que o mapa entre em um estado “ocioso”:

  • Nenhuma transição de câmera está em andamento.
  • Todos os blocos atualmente solicitados foram carregados.
  • Todas as animações de esmaecimento/transição foram concluídas.

OnCameraMove () É acionado repetidamente durante uma transição animada de uma exibição para outra, como resultado dos métodos ou da interação do usuário.
OnCameraMoveCanceled () É acionado quando uma solicitação de movimento para a câmera é cancelada.
OnCameraMoveStarted (int reason) É acionado logo antes de o mapa iniciar a transição de uma exibição para outra, como resultado da interação ou dos métodos do usuário. O argumento reason do ouvinte de eventos retorna um valor inteiro que fornece detalhes de como o movimento da câmera foi iniciado. A lista a seguir descreve os possíveis motivos:
  • 1: gesto
  • 2: animação do desenvolvedor
  • 3: animação da API
OnClick (double lat, double lon): boolean Aciona quando o mapa é pressionado e liberado no mesmo ponto no mapa. Esse manipulador de eventos retorna um valor booliano que indica se o evento deve ser consumido ou passado para outros ouvintes de evento.
OnFeatureClick (List<Feature>): boolean Aciona quando o mapa é pressionado e liberado no mesmo ponto em um recurso. Esse manipulador de eventos retorna um valor booliano que indica se o evento deve ser consumido ou passado para outros ouvintes de evento.
OnLayerAdded (Layer layer) Aciona quando uma camada é adicionada ao mapa.
OnLayerRemoved (Layer layer) Aciona quando uma camada é removida do mapa.
OnLoaded () É acionado imediatamente após o download de todos os recursos necessários e a primeira renderização visualmente completa do mapa ter ocorrido.
OnLongClick (double lat, double lon): boolean Aciona quando o mapa é pressionado, mantido por um momento e liberado no mesmo ponto no mapa. Esse manipulador de eventos retorna um valor booliano que indica se o evento deve ser consumido ou passado para outros ouvintes de evento.
OnLongFeatureClick (List<Feature>): boolean Aciona quando o mapa é pressionado, mantido por um momento e liberado no mesmo ponto em um recurso. Esse manipulador de eventos retorna um valor booliano que indica se o evento deve ser consumido ou passado para outros ouvintes de evento.
 OnReady                (AzureMap map)       É acionado quando o mapa é carregado inicialmente, a orientação muda, os recursos mínimos necessários do mapa são carregados e o mapa está pronto para ser interagido programaticamente. 
OnSourceAdded (Source source) Aciona quando uma DataSource ou VectorTileSource é adicionada ao mapa.
OnSourceRemoved (Source source) Aciona quando uma DataSource ou VectorTileSource é removida do mapa.
OnStyleChange () Aciona quando o estilo do mapa é carregado ou alterado.

O código a seguir mostra como adicionar os eventos OnClick, OnFeatureClick e OnCameraMoveao 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 saber mais, consulte a documentação Navegação no mapa sobre como interagir com o mapa e acionar eventos.

Eventos de recurso de escopo para camada

Quando os eventos OnFeatureClick ou OnLongFeatureClick são adicionados ao mapa, uma instância de camada ou ID de camada pode ser passada como um segundo parâmetro. Quando uma camada é passada, um evento é acionado se ocorrer nessa camada. Os eventos com escopo de camadas são compatíveis com as camadas de símbolos, bolhas, linhas e 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
)

Próximas etapas

Consulte os seguintes artigos para obter exemplos de código completo: