Partilhar via


Interagir com o mapa (Android SDK)

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

Nota

Aposentadoria do SDK do Android do Azure Maps

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

Interaja com o mapa

O mapa gere todos os eventos através da sua events propriedade. A tabela a seguir lista os eventos de mapa suportados.

Evento Formato do manipulador de eventos Description
OnCameraIdle ()

Aciona 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 solicitados atualmente foram carregados.
  • Todas as animações de desvanecimento/transição foram concluídas.

OnCameraMove () Aciona repetidamente durante uma transição animada de uma exibição para outra, como resultado da interação do usuário ou métodos.
OnCameraMoveCanceled () É acionado quando uma solicitação de movimento para a câmera é cancelada.
OnCameraMoveStarted (int reason) Aciona pouco antes do mapa iniciar uma transição de uma exibição para outra, como resultado da interação do usuário ou métodos. O reason argumento 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 de API
OnClick (double lat, double lon): boolean Dispara quando o mapa é pressionado e liberado no mesmo ponto do mapa. Esse manipulador de eventos retorna um valor booleano indicando se o evento deve ser consumido ou passado para outros ouvintes de eventos.
OnFeatureClick (List<Feature>): boolean É acionado quando o mapa é pressionado e liberado no mesmo ponto em um recurso. Esse manipulador de eventos retorna um valor booleano indicando se o evento deve ser consumido ou passado para outros ouvintes de eventos.
OnLayerAdded (Layer layer) É acionado quando uma camada é adicionada ao mapa.
OnLayerRemoved (Layer layer) É acionado quando uma camada é removida do mapa.
OnLoaded () Incêndios imediatamente após todos os recursos necessários terem sido baixados e a primeira renderização visualmente completa do mapa ter ocorrido.
OnLongClick (double lat, double lon): boolean Dispara quando o mapa é pressionado, mantido por um momento e, em seguida, liberado no mesmo ponto do mapa. Esse manipulador de eventos retorna um valor booleano indicando se o evento deve ser consumido ou passado para outros ouvintes de eventos.
OnLongFeatureClick (List<Feature>): boolean Dispara quando o mapa é pressionado, mantido por um momento e, em seguida, liberado no mesmo ponto em um recurso. Esse manipulador de eventos retorna um valor booleano indicando se o evento deve ser consumido ou passado para outros ouvintes de eventos.
 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) Dispara quando um DataSource ou VectorTileSource é adicionado ao mapa.
OnSourceRemoved (Source source) Dispara quando um DataSource ou VectorTileSource é removido do mapa.
OnStyleChange () É acionado quando o estilo do mapa é carregado ou alterado.

O código a seguir mostra como adicionar os OnClickeventos , OnFeatureClicke OnCameraMove ao 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 obter mais informações, consulte a documentação Navegando no mapa sobre como interagir com o mapa e acionar eventos.

Eventos de recurso de escopo para camada

Quando os OnFeatureClick eventos or 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 para camadas são suportados pelas camadas de símbolo, bolha, linha e polígono.

//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óximos passos

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