Come aggiungere una mappa alla tua app con MapKit e Core Location– iOS Swift Guide

Passo 4: Locate Me Button: Mostra la posizione sulla mappa

Primo passo, recupereremo la posizione corrente quando l’utente preme il pulsante locate-me 🧭.

Il gestore posizioni fornisce la posizione corrente in un oggetto CLLocationcon locationManager.location. Questo oggetto contiene informazioni diverse, inclusi i valori delle coordinate di latitudine e longitudine.

Aggiungi un’annotazione alla mappa

Creiamo una nuova funzione che aggiungerà un’annotazione alla mappa alle coordinate date.

La seguente funzione crea un nuovo oggetto MKPointAnnotation e lo aggiunge alla mappa dopo aver rimosso tutte le annotazioni precedenti. Inoltre, ingrandisce e scorre la mappa per mettere l’annotazione appena aggiunta al centro dello schermo.

Aggiungi un’annotazione alla mappa

Ora che abbiamo questa funzione, puoi chiamarla con le informazioni sulla posizione corrente che vuoi visualizzare, nella tua funzione button IBAction. Per ora, metteremo nil come titolo poiché non abbiamo ancora queste informazioni.

updateLocationOnMap(to: locationManager.location, with: nil)

Aggiungi l’indirizzo completo della posizione come titolo all’annotazione

Ora, aggiungeremo l’indirizzo completo della posizione come titolo all’annotazione. CoreLocation ci dà un facile da fare con CLGeocoder.

Crea un’estensione a CLLocation e aggiungi la seguente funzione:

Ottieni segnaposto per la posizione

Invertirà la posizione del geocode e ti darà un CLPlacemark, contenente tutte le informazioni necessarie per estrarre l’indirizzo postale completo.

Le informazioni sull’indirizzo sono memorizzate come di seguito nell’oggetto Segnaposto. Per ottenere un valore stringa dell’indirizzo completo, dovrai concatenare i componenti necessari. Ecco un esempio per l’indirizzo HQ di Apple nella tabella sottostante:

Valori corrispondenti alle proprietà CLPlacemark

Aggiungiamo una funzione alla nostra estensione CLLocation che ci fornirà direttamente l’indirizzo completo. Per comodità, è possibile aggiungere una nuova proprietà in un’estensione di CLPlacemark. In questo esempio, questa proprietà è chiamata stringValue.

Ottieni l’indirizzo completo della stringa dalla posizione

Ora aggiorniamo la chiamata a updateLocationOnMap con la nostra nuova funzione lookUpLocationName.

Mostra la posizione corrente sulla mappa dal pulsante tap

Crea ed esegui la tua app: ora quando premi il pulsante locate-me, la tua posizione corrente viene aggiunta sulla mappa, visualizzando l’indirizzo completo della tua posizione corrente!

Aggiungi un segnaposto da un indirizzo stringa alla mappa

La maggior parte della funzione che abbiamo scritto nel passaggio 3 per il pulsante locate-me verrà utilizzata anche in questa parte. Aggiungeremo solo una nuova funzione updatePlaceMark(to address: String) e la richiameremo sulla convalida del campo di testo.

In questa funzione, per prima cosa otterremo segnaposto dal valore stringa inserito dall’utente, quindi aggiorneremo la mappa con il primo segnaposto con il suo valore di indirizzo completo.

Mostra la posizione sulla mappa in base a un indirizzo stringa

Si noti che geocodeAddressString non è una funzione di ricerca della posizione, quindi per funzionare sarà necessario un indirizzo valido e una posizione identificabile, una città, uno stato o un paese nel campo per avere un risultato.

Punto 6: Mostra la posizione in tempo reale sulla mappa

Per mostrare la posizione in tempo reale, aggiungi la seguente funzione delegate nell’estensione CLLocationManagerDelegate che abbiamo già creato.

Il Gestore delle posizioni chiamerà automaticamente questa funzione agli aggiornamenti delle posizioni, in base al criterio definito all’inizio.

Mostra la posizione in tempo reale sulla mappa

Passo 7: Crea & Esegui

Crea ed esegui la tua app: Ora hai un’app Mappa che ti mostra la tua posizione corrente, visualizzando l’indirizzo completo in tempo reale, individuandoti su un pulsante locate-me e permettendoti di cercare le posizioni da un campo di testo.



+