- Paso 4: Botón Ubicarme: Mostrar la ubicación en el mapa
- Añadir una anotación al mapa
- Agregue la dirección completa de la ubicación como título a la anotación
- Agregar una marca de posición de una dirección de cadena al Mapa
- Paso 6: Mostrar ubicación en tiempo real en el mapa
- Paso 7: Compilar & Ejecutar
Paso 4: Botón Ubicarme: Mostrar la ubicación en el mapa
Primer paso, recuperaremos la ubicación actual cuando el usuario presione el botón ubicarme 🧭.
El administrador de ubicaciones le da la ubicación actual en un objeto CLLocation
con locationManager.location
. Este objeto contiene diferentes informaciones, incluidos los valores de coordenadas de latitud y longitud.
Añadir una anotación al mapa
Vamos a crear una nueva función que añadirá una anotación al mapa en las coordenadas dadas.
La siguiente función crea un nuevo objeto MKPointAnnotation
y lo agrega al mapa después de eliminar todas las anotaciones anteriores. También amplía y desplaza el mapa para colocar la anotación recién añadida en el centro de la pantalla.
Ahora que tenemos esta función, puede llamarla con la información de ubicación actual que desea mostrar, en su función de botón IBAction. Por ahora, pondremos nil
como título, ya que aún no tenemos esta información.
updateLocationOnMap(to: locationManager.location, with: nil)
Agregue la dirección completa de la ubicación como título a la anotación
Ahora, agregaremos la dirección completa de la ubicación como título a la anotación. CoreLocation nos permite hacerlo fácilmente con CLGeocoder
.
Cree una extensión a CLLocation
y agregue la siguiente función:
Invertirá la ubicación del geocódigo y le dará un CLPlacemark
, que contiene toda la información necesaria para extraer la dirección postal completa.
La información de dirección se almacena como se muestra a continuación en el objeto Marca de posición. Para obtener un valor de cadena de la dirección completa, tendrá que concatenar los componentes que necesita. Este es un ejemplo de la dirección de Apple HQ en la tabla a continuación:
Agreguemos una función a nuestra extensión CLLocation
que nos dará la dirección completa directamente. Para mayor comodidad, puede agregar una nueva propiedad en una extensión CLPlacemark
. En este ejemplo, esta propiedad se llama stringValue
.
Ahora actualicemos la llamada a updateLocationOnMap
con nuestra nueva función lookUpLocationName
.
Cree y ejecute su aplicación: ahora, cuando presione el botón localizar, su ubicación actual se agregará en el mapa, mostrando su dirección completa de ubicación actual.
Agregar una marca de posición de una dirección de cadena al Mapa
La mayor parte de la función que escribimos en el Paso 3 para el botón localizar-me también se usará en esta parte. Solo agregaremos una nueva función updatePlaceMark(to address: String)
y la llamaremos tras la validación de TextField.
En esta función, primero obtendremos marcas de posición del valor de cadena introducido por el usuario, luego actualizaremos el mapa con la primera marca de posición con su valor de dirección completa.
Tenga en cuenta que geocodeAddressString
no es una función de búsqueda de ubicación, por lo que para que funcione necesitará una dirección válida y una ubicación identificable, una ciudad, un estado o un país en el campo para obtener un resultado.
Paso 6: Mostrar ubicación en tiempo real en el mapa
Para mostrar la ubicación en tiempo real, agregue la siguiente función de delegado en la extensión CLLocationManagerDelegate
que ya creamos.
El Administrador de ubicaciones llamará a esta función automáticamente en las actualizaciones de ubicación, de acuerdo con la política definida al principio.
Paso 7: Compilar & Ejecutar
Compilar y ejecutar su aplicación: Ahora tiene una aplicación de mapas que le muestra su ubicación actual, muestra la dirección completa en tiempo real, lo ubica en un toque del botón localizar y le permite buscar ubicaciones desde un campo de texto.