- Passo 4: Locate Me Button: Mostra la posizione sulla mappa
- Aggiungi un’annotazione alla mappa
- Aggiungi l’indirizzo completo della posizione come titolo all’annotazione
- Aggiungi un segnaposto da un indirizzo stringa alla mappa
- Punto 6: Mostra la posizione in tempo reale sulla mappa
- Passo 7: Crea & Esegui
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 CLLocation
con 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.
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:
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:
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
.
Ora aggiorniamo la chiamata a updateLocationOnMap
con la nostra nuova funzione lookUpLocationName
.
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.
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.
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.