Interacción con el mapa en el SDK de iOS (versión preliminar)
En este artículo se muestra cómo usar el administrador de eventos de mapa.
Nota:
Retirada del SDK de Azure Maps para iOS
El SDK nativo de Azure Maps para iOS ya está en desuso y se retirará el 31 de marzo de 2025. Para evitar interrupciones del servicio, migre al SDK web de Azure Maps antes del 31 de marzo de 2025. Para más información, vea la Guía de migración del SDK de Azure Maps para iOS.
Interacción con el mapa
El mapa administra todos los eventos a través de la propiedad events
que acepta delegados, que se ajustan al protocolo AzureMapDelegate
. En la tabla siguiente se enumeran todos los eventos de mapa admitidos representados como métodos del protocolo AzureMapDelegate
.
Método | Descripción |
---|---|
azureMapCameraIsIdle(_ map: AzureMap) |
Se inicia después del último fotograma representado antes de que el mapa entre en un estado "inactivo":
|
azureMapCameraIsMoving(_ map: AzureMap) |
Se inicia repetidamente durante una transición animada de una vista a otra. Esto puede ser el resultado de la interacción del usuario o de los métodos. |
azureMapCameraMoveWasCanceled(_ map: AzureMap) |
Se inicia al cancelar una solicitud de movimiento a la cámara. |
azureMap(_ map: AzureMap, cameraMoveIsStarted reason: CameraChangeReason) |
Se inicia justo antes de que el mapa comience a realizar la transición de una vista a otra. Esto puede ocurrir mediante programación o como resultado de la interacción del usuario. El parámetro reason es un conjunto de opciones que proporciona detalles de cómo se inició el movimiento de la cámara. A continuación, se muestra la lista de posibles motivos:
|
azureMap(_ map: AzureMap, didTapAt location: CLLocationCoordinate2D) |
Se inicia cuando el mapa se presiona y se libera en el mismo punto del mapa. |
azureMap(_ map: AzureMap, didTapOn features: [Feature]) |
Se inicia cuando el mapa se presiona y se libera en el mismo punto de una característica. |
azureMap(_ map: AzureMap, didAddLayer layer: Layer) |
Se inicia cuando se agrega una capa al mapa. |
azureMap(_ map: AzureMap, didRemoveLayer layer: Layer) |
Se inicia cuando se quita una capa del mapa. |
azureMapWillLoad(_ map: AzureMap) |
Se inicia antes de descargar los recursos necesarios para la representación. |
azureMapDidLoad(_ map: AzureMap) |
Se inicia después de descargar los recursos y se completa la primera representación visual del mapa. |
azureMap(_ map: AzureMap, didLongPressAt location: CLLocationCoordinate2D) |
Se inicia cuando el mapa se presiona, se mantiene durante un momento y, a continuación, se libera en el mismo punto del mapa. |
azureMap(_ map: AzureMap, didLongPressOn features: [Feature]) |
Se inicia cuando el mapa se presiona, se mantiene durante un momento y, a continuación, se libera en el mismo punto de una característica. |
azureMapIsReady(_ map: AzureMap) |
Se inicia siempre que se cumplan las condiciones siguientes:
|
azureMap(_ map: AzureMap, didAddSource source: Source) |
Se inicia cuando se agrega DataSource o VectorTileSource al mapa. |
azureMap(_ map: AzureMap, didRemoveSource source: Source) |
Se inicia cuando se quita DataSource o VectorTileSource del mapa. |
azureMapStyleDidChange(_ map: AzureMap) |
Se inicia cuando se carga o cambia el estilo del mapa. |
En el siguiente código se muestra cómo agregar los eventos azureMap(_ map: AzureMap, didTapAt location: CLLocationCoordinate2D)
, azureMap(_ map: AzureMap, didTapOn features: [Feature])
y azureMapCameraIsMoving(_ map: AzureMap)
al 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 obtener más información, consulte el artículo Navegación por el mapa para saber cómo interactuar con el mapa y desencadenar eventos.
Delimitación de los eventos de características a una capa
Al agregar un delegado al mapa, los id. de capa se pueden pasar como un segundo parámetro. Cuando se pasen las capas, el evento solo se activará si se produce en esa capa. Los eventos que se limitan a determinadas capas se admiten en las capas de símbolos, burbujas, líneas y 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.
}
}
Información adicional
Consulte los siguientes artículos para obtener ejemplos de código completo: