Partilhar via


Interagir com o mapa no SDK do iOS (Pré-visualização)

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

Nota

Aposentadoria do SDK do iOS do Azure Maps

O SDK nativo do Azure Maps para iOS 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 iOS do Azure Maps.

Interaja com o mapa

O mapa gerencia todos os eventos através de sua events propriedade aceitando delegados, que estão em conformidade com o AzureMapDelegate protocolo. A tabela a seguir lista todos os eventos de mapa suportados representados como métodos do AzureMapDelegate protocolo.

Método Description
azureMapCameraIsIdle(_ map: AzureMap)

É acionado após a renderização do último quadro, 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.

azureMapCameraIsMoving(_ map: AzureMap) Incêndios repetidamente durante uma transição animada de uma visão para outra. Isso pode ser o resultado da interação do usuário ou métodos.
azureMapCameraMoveWasCanceled(_ map: AzureMap) É acionado ao cancelar uma solicitação de movimento para a câmera.
azureMap(_ map: AzureMap, cameraMoveIsStarted reason: CameraChangeReason) Incêndios pouco antes de o mapa começar a transitar de uma vista para outra. Isso pode ocorrer programaticamente ou como resultado da interação do usuário. O reason parâmetro é um conjunto de opções que fornece detalhes de como o movimento da câmera foi iniciado. A lista a seguir descreve os possíveis motivos:
  • Desconhecido
  • Programática
  • Reposição Norte
  • Gesto de panorâmica
  • Gesto de beliscar
  • Gesto de rotação
  • Gesto de zoom
  • Gesto de redução de zoom
  • Gesto de zoom com um dedo
  • Gesto de inclinação
  • Transição cancelada
azureMap(_ map: AzureMap, didTapAt location: CLLocationCoordinate2D) Dispara quando o mapa é pressionado e liberado no mesmo ponto do mapa.
azureMap(_ map: AzureMap, didTapOn features: [Feature]) É acionado quando o mapa é pressionado e liberado no mesmo ponto em um recurso.
azureMap(_ map: AzureMap, didAddLayer layer: Layer) É acionado quando uma camada é adicionada ao mapa.
azureMap(_ map: AzureMap, didRemoveLayer layer: Layer) É acionado quando uma camada é removida do mapa.
azureMapWillLoad(_ map: AzureMap) É acionado antes de baixar os recursos necessários para a renderização.
azureMapDidLoad(_ map: AzureMap) É acionado após o download dos recursos e a primeira renderização visual do mapa é concluída.
azureMap(_ map: AzureMap, didLongPressAt location: CLLocationCoordinate2D) Dispara quando o mapa é pressionado, mantido por um momento e, em seguida, liberado no mesmo ponto do mapa.
azureMap(_ map: AzureMap, didLongPressOn features: [Feature]) Dispara quando o mapa é pressionado, mantido por um momento e, em seguida, liberado no mesmo ponto em um recurso.
azureMapIsReady(_ map: AzureMap) Dispara quando estão reunidas as seguintes condições:
  • O mapa carrega inicialmente
  • A orientação do aplicativo muda
  • Os recursos mínimos necessários do mapa terminam de carregar
  • O mapa está pronto para ser interagido programaticamente.
azureMap(_ map: AzureMap, didAddSource source: Source) Dispara quando um DataSource ou VectorTileSource é adicionado ao mapa.
azureMap(_ map: AzureMap, didRemoveSource source: Source) Dispara quando um DataSource ou VectorTileSource é removido do mapa.
azureMapStyleDidChange(_ map: AzureMap) É acionado quando o estilo do mapa é carregado ou alterado.

O código a seguir mostra como adicionar os azureMap(_ map: AzureMap, didTapAt location: CLLocationCoordinate2D)eventos , 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 obter mais informações, consulte o artigo Navegando no mapa sobre como interagir com o mapa e acionar eventos.

Eventos de recurso de escopo para camada

Ao adicionar um delegado ao mapa, os IDs de camada podem ser passados como um segundo parâmetro. Quando as camadas são passadas, o evento só é acionado se ocorrer nessa camada. Os eventos com escopo para camadas são suportados pelas camadas de símbolo, bolha, linha e polígono.

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: