Interagir com o mapa no SDK do iOS (versão prévia)
Este artigo mostra como usar o gerente de eventos de mapas.
Observação
Desativação do SDK do iOS no Azure Mapas
O SDK Nativo do Azure Mapas para iOS 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 iOS no Azure Mapas.
Interagir com o mapa
O mapa gerencia todos os eventos por meio de sua events
propriedade aceitando delegados, que estão em conformidade com o protocolo AzureMapDelegate
. A tabela a seguir lista todos os eventos de mapa com suporte representados como métodos do protocoloAzureMapDelegate
.
Método | Descrição |
---|---|
azureMapCameraIsIdle(_ map: AzureMap) |
Aciona após a renderização do último quadro, antes do mapa entrar em um estado "ocioso":
|
azureMapCameraIsMoving(_ map: AzureMap) |
Aciona repetidamente durante uma transição animada de uma exibição para outra. Isso pode ser o resultado da interação do usuário ou dos métodos. |
azureMapCameraMoveWasCanceled(_ map: AzureMap) |
Aciona ao cancelar uma solicitação de movimentação para a câmera. |
azureMap(_ map: AzureMap, cameraMoveIsStarted reason: CameraChangeReason) |
Aciona logo antes de o mapa começar a fazer a transição de uma exibição para outra. Isso pode ocorrer programaticamente ou como resultado da interação do usuário. O parâmetro reason é um conjunto de opções que fornece detalhes de como a movimentação da câmera foi iniciada. A lista a seguir descreve os possíveis motivos:
|
azureMap(_ map: AzureMap, didTapAt location: CLLocationCoordinate2D) |
Aciona quando o mapa é pressionado e liberado no mesmo ponto no mapa. |
azureMap(_ map: AzureMap, didTapOn features: [Feature]) |
Aciona quando o mapa é pressionado e liberado no mesmo ponto em um recurso. |
azureMap(_ map: AzureMap, didAddLayer layer: Layer) |
Aciona quando uma camada é adicionada ao mapa. |
azureMap(_ map: AzureMap, didRemoveLayer layer: Layer) |
Aciona quando uma camada é removida do mapa. |
azureMapWillLoad(_ map: AzureMap) |
Aciona antes de baixar os recursos necessários para renderização. |
azureMapDidLoad(_ map: AzureMap) |
Aciona depois que os recursos são baixados e a primeira renderização visual do mapa é concluída. |
azureMap(_ map: AzureMap, didLongPressAt location: CLLocationCoordinate2D) |
Aciona quando o mapa é pressionado, mantido por um momento e liberado no mesmo ponto no mapa. |
azureMap(_ map: AzureMap, didLongPressOn features: [Feature]) |
Aciona quando o mapa é pressionado, mantido por um momento e liberado no mesmo ponto em um recurso. |
azureMapIsReady(_ map: AzureMap) |
Aciona quando as condições a seguir forem atendidas:
|
azureMap(_ map: AzureMap, didAddSource source: Source) |
Aciona quando uma DataSource ou VectorTileSource é adicionada ao mapa. |
azureMap(_ map: AzureMap, didRemoveSource source: Source) |
Aciona quando uma DataSource ou VectorTileSource é removida do mapa. |
azureMapStyleDidChange(_ map: AzureMap) |
Aciona quando o estilo do mapa é carregado ou alterado. |
O código a seguir mostra como adicionar os eventos azureMap(_ map: AzureMap, didTapAt location: CLLocationCoordinate2D)
, azureMap(_ map: AzureMap, didTapOn features: [Feature])
e azureMapCameraIsMoving(_ map: AzureMap)
ao mapa.
class ShowSimpleEventsHandlingViewController: UIViewController, AzureMapDelegate {
// Other Setup...
func setupMapControl() {
mapControl.onReady { map in
// Add the delegate to the map to respond to events.
map.events.addDelegate(self)
}
}
func azureMap(_ map: AzureMap, didTapAt location: CLLocationCoordinate2D) {
// Map clicked.
}
func azureMap(_ map: AzureMap, didTapOn features: [Feature]) {
// Feature clicked.
}
func azureMapCameraIsMoving(_ map: AzureMap) {
// Map camera moved.
}
}
Para saber mais, consulte o artigo Navegação no mapa sobre como interagir com o mapa e acionar eventos.
Eventos de recurso de escopo para camada
Ao adicionar um delegado ao mapa, as IDs de camada podem ser passadas como um segundo parâmetro. Quando camadas são passadas, o evento só será acionado se ele ocorrer naquela camada. Os eventos com escopo de camadas são compatíveis com as camadas de símbolos, bolhas, linhas e polígonos.
class ShowScopedEventsHandlingViewController: UIViewController, AzureMapDelegate {
// Other Setup...
func setupMapControl() {
mapControl.onReady { map in
// Create a data source.
let source = DataSource()
map.sources.add(source)
// Add data to the data source.
source.add(geometry: Point(CLLocationCoordinate2D(latitude: 0, longitude: 0)))
// Create a layer and add it to the map.
let layer = BubbleLayer(source: source)
map.layers.addLayer(layer)
// Add the delegate to the map to respond to events.
map.events.addDelegate(self, for: [layer.id])
}
}
func azureMap(_ map: AzureMap, didTapOn features: [Feature]) {
// One or more features tapped.
}
func azureMap(_ map: AzureMap, didLongPressOn features: [Feature]) {
// One or more features long pressed.
}
}
Informações adicionais
Consulte os seguintes artigos para obter exemplos de código completo: