Compartilhar via


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

  • 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.

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:
  • Unknown
  • Programático
  • Redefinição norte
  • Gesto de panorama
  • Gesto de pinçar
  • Gesto de girar
  • Gesto de Ampliar
  • Gesto de Reduzir
  • Gesto de zoom com um dedo
  • Gesto de inclinação
  • Transição cancelada
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:
  • O mapa é carregado inicialmente
  • A orientação do aplicativo muda
  • Os recursos mínimos necessários do mapa terminam o carregamento
  • O mapa está pronto para ser interagido programaticamente.
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: