Sdílet prostřednictvím


Interakce s mapou v sadě iOS SDK (Preview)

V tomto článku se dozvíte, jak používat správce událostí map.

Poznámka:

Vyřazení sady Azure Mapy iOS SDK

Sada Azure Mapy Native SDK pro iOS je teď zastaralá a bude vyřazena 31. 31. 25. Pokud se chcete vyhnout přerušení služeb, proveďte migraci do sady Azure Mapy Web SDK do 31. 31. 25. Další informace najdete v průvodci migrací sady Azure Mapy iOS SDK.

Interakce s mapou

Mapa spravuje všechny události prostřednictvím své events vlastnosti přijímající delegáty, které odpovídají AzureMapDelegate protokolu. V následující tabulce jsou uvedeny všechny podporované události mapování reprezentované jako metody AzureMapDelegate protokolu.

metoda Popis
azureMapCameraIsIdle(_ map: AzureMap)

Aktivuje se po vykreslení posledního snímku, než mapa přejde do stavu nečinnosti:

  • Neprobíhá žádný přechod kamery.
  • Všechny aktuálně požadované dlaždice se načetly.
  • Všechny animace prolnutí a přechodů byly dokončeny.

azureMapCameraIsMoving(_ map: AzureMap) Aktivuje se opakovaně během animovaného přechodu z jednoho zobrazení do druhého. Může to být výsledek interakce uživatele nebo metod.
azureMapCameraMoveWasCanceled(_ map: AzureMap) Aktivuje se při zrušení žádosti o pohyb na kameru.
azureMap(_ map: AzureMap, cameraMoveIsStarted reason: CameraChangeReason) Aktivuje se těsně před tím, než se mapa začne přecházet z jednoho zobrazení na druhé. K tomu může dojít programově nebo v důsledku interakce uživatele. Parametr reason je sada možností, která poskytuje podrobnosti o zahájení pohybu kamery. Následující seznam popisuje možné důvody:
  • Neznámý
  • Programová
  • Resetování na sever
  • Gesto posouvání
  • Gesto připnutí
  • Gesto otočení
  • Gesto přiblížení
  • Gesto oddálení
  • Gesto přiblížení jedním prstem
  • Gesto naklonění
  • Přechod zrušen
azureMap(_ map: AzureMap, didTapAt location: CLLocationCoordinate2D) Aktivuje se při stisknutí a uvolnění mapy ve stejném bodě na mapě.
azureMap(_ map: AzureMap, didTapOn features: [Feature]) Aktivuje se, když se mapa stiskne a uvolní ve stejném bodě funkce.
azureMap(_ map: AzureMap, didAddLayer layer: Layer) Aktivuje se při přidání vrstvy do mapy.
azureMap(_ map: AzureMap, didRemoveLayer layer: Layer) Aktivuje se při odebrání vrstvy z mapy.
azureMapWillLoad(_ map: AzureMap) Aktivuje se před stažením prostředků potřebných k vykreslení.
azureMapDidLoad(_ map: AzureMap) Aktivuje se po stažení prostředků a dokončení prvního vizuálního vykreslování mapy.
azureMap(_ map: AzureMap, didLongPressAt location: CLLocationCoordinate2D) Aktivuje se, když se mapa stiskne, drží se na chvíli a pak se uvolní na stejném místě na mapě.
azureMap(_ map: AzureMap, didLongPressOn features: [Feature]) Aktivuje se, když se mapa stiskne, drží se na chvíli a pak se uvolní ve stejném okamžiku na funkci.
azureMapIsReady(_ map: AzureMap) Aktivuje se při splnění následujících podmínek:
  • Mapa se zpočátku načte.
  • Orientace aplikace se změní.
  • Minimální požadované prostředky mapování se dokončí načítání.
  • Mapa je připravená k programové interakci.
azureMap(_ map: AzureMap, didAddSource source: Source) Aktivuje se při DataSource přidání nebo VectorTileSource přidání do mapy.
azureMap(_ map: AzureMap, didRemoveSource source: Source) Aktivuje se při DataSource odebrání nebo VectorTileSource odebrání z mapy.
azureMapStyleDidChange(_ map: AzureMap) Aktivuje se, když se styl mapy načte nebo změní.

Následující kód ukazuje, jak přidat azureMap(_ map: AzureMap, didTapAt location: CLLocationCoordinate2D), azureMap(_ map: AzureMap, didTapOn features: [Feature])a azureMapCameraIsMoving(_ map: AzureMap) události 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.
    }
}

Další informace najdete v článku o navigaci v mapě o interakci s událostmi mapy a triggeru.

Rozsah událostí funkcí na vrstvu

Při přidávání delegáta do mapy je možné ID vrstev předat jako druhý parametr. Když se vrstvy předají, událost se aktivuje pouze v případě, že dojde k této vrstvě. Události vymezené na vrstvy jsou podporovány pomocí symbolu, bubliny, čáry a mnohoúhelníku.

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

Další informace

Úplné příklady kódu najdete v následujících článcích: