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