Udostępnij za pośrednictwem


Interakcja z mapą w zestawie SDK systemu iOS (wersja zapoznawcza)

W tym artykule pokazano, jak używać menedżera zdarzeń mapowania.

Uwaga

Wycofanie zestawu AZURE Mapy iOS SDK

Zestaw Azure Mapy Native SDK dla systemu iOS jest teraz przestarzały i zostanie wycofany w dniu 3/31/25. Aby uniknąć przerw w działaniu usługi, przeprowadź migrację do zestawu Sdk sieci Web usługi Azure Mapy do 31/31/25. Aby uzyskać więcej informacji, zobacz Przewodnik migracji zestawu SDK platformy Azure Mapy iOS.

Interakcja z mapą

Mapa zarządza wszystkimi zdarzeniami za pośrednictwem jej events właściwości akceptujących delegatów, które są zgodne z protokołem AzureMapDelegate . W poniższej tabeli wymieniono wszystkie obsługiwane zdarzenia mapy reprezentowane jako metody AzureMapDelegate protokołu.

Metoda opis
azureMapCameraIsIdle(_ map: AzureMap)

Zostanie wyzwolony po renderowaniu ostatniej ramki, zanim mapa przejdzie w stan bezczynności:

  • Żadne przejścia aparatu nie są w toku.
  • Załadowano wszystkie aktualnie żądane kafelki.
  • Wszystkie animacje zanikania/przejścia zostały ukończone.

azureMapCameraIsMoving(_ map: AzureMap) Uruchamia się wielokrotnie podczas animowanego przejścia z jednego widoku do drugiego. Może to być wynik interakcji użytkownika lub metod.
azureMapCameraMoveWasCanceled(_ map: AzureMap) Wystrzeliwuje podczas anulowania żądania ruchu do kamery.
azureMap(_ map: AzureMap, cameraMoveIsStarted reason: CameraChangeReason) Uruchamia się tuż przed rozpoczęciem przejścia mapy z jednego widoku do drugiego. Może się to zdarzyć programowo lub w wyniku interakcji użytkownika. Parametr reason jest zestawem opcji, który zawiera szczegółowe informacje o sposobie inicjowania ruchu aparatu. Poniższa lista przedstawia możliwe przyczyny:
  • Nieznane
  • Programowa
  • Resetowanie północy
  • Gest przesuwania
  • Gest uszczypnięcia
  • Obróć gest
  • Gest powiększenia
  • Gest pomniejszania
  • Gest powiększenia jednego palca
  • Gest pochylenia
  • Anulowanie przejścia
azureMap(_ map: AzureMap, didTapAt location: CLLocationCoordinate2D) Uruchamia się, gdy mapa jest naciśnięta i zwalniana w tym samym punkcie na mapie.
azureMap(_ map: AzureMap, didTapOn features: [Feature]) Uruchamia się, gdy mapa jest naciśnięta i zwalniana w tym samym punkcie funkcji.
azureMap(_ map: AzureMap, didAddLayer layer: Layer) Uruchamia się po dodaniu warstwy do mapy.
azureMap(_ map: AzureMap, didRemoveLayer layer: Layer) Uruchamia się po usunięciu warstwy z mapy.
azureMapWillLoad(_ map: AzureMap) Uruchamia się przed pobraniem zasobów wymaganych do renderowania.
azureMapDidLoad(_ map: AzureMap) Wyzwalane po pobraniu zasobów i zakończeniu pierwszego wizualnego renderowania mapy.
azureMap(_ map: AzureMap, didLongPressAt location: CLLocationCoordinate2D) Uruchamia się, gdy mapa jest naciśnięta, przechowywana przez chwilę, a następnie zwalniana w tym samym punkcie na mapie.
azureMap(_ map: AzureMap, didLongPressOn features: [Feature]) Uruchamia się, gdy mapa jest naciśnięta, przechowywana przez chwilę, a następnie zwalniana w tym samym momencie na funkcji.
azureMapIsReady(_ map: AzureMap) Uruchamia się, gdy spełnione są następujące warunki:
  • Mapa początkowo ładuje
  • Orientacja aplikacji zmienia się
  • Ładowanie minimalnych wymaganych zasobów mapy
  • Mapa jest gotowa do programowej interakcji.
azureMap(_ map: AzureMap, didAddSource source: Source) Uruchamia się po dodaniu elementu DataSource lub VectorTileSource do mapy.
azureMap(_ map: AzureMap, didRemoveSource source: Source) Uruchamia się, gdy element DataSource lub VectorTileSource zostanie usunięty z mapy.
azureMapStyleDidChange(_ map: AzureMap) Uruchamia się, gdy styl mapy zostanie załadowany lub zmieniony.

Poniższy kod przedstawia sposób dodawania azureMap(_ map: AzureMap, didTapAt location: CLLocationCoordinate2D)zdarzeń , azureMap(_ map: AzureMap, didTapOn features: [Feature])i azureMapCameraIsMoving(_ map: AzureMap) do mapy.

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

Aby uzyskać więcej informacji, zobacz artykuł Nawigowanie po mapie na temat interakcji ze zdarzeniami mapy i wyzwalania.

Określanie zakresu zdarzeń funkcji do warstwy

Podczas dodawania delegata do mapy identyfikatory warstw można przekazać jako drugi parametr. Po przekazaniu warstw zdarzenie jest uruchamiane tylko wtedy, gdy występuje w tej warstwie. Zdarzenia o zakresie warstw są obsługiwane przez warstwy symboli, bąbelków, linii i wielokątów.

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

Dodatkowe informacje

Zobacz następujące artykuły, aby zapoznać się z pełnymi przykładami kodu: