Usare le mappe
MapKit Per utilizzare le mappe all’interno di uno specifico VIewController, è sufficiente inserire al suo interno una view di tipo MKMapView Questo componente gestisce la visualizzazione di una specifica area e le potenziali gesture che possono essere effettuate dall’utente.
MapKit: proprietà configurabili da storyboard
Tipo Tramite il tipo è possibile scegliere come sarà visualizzata la mappa (stradale, satellitare, entrambe)
Altre proprietà Scrolling, Zooming, Rotating : Permettono di specificare quali azioni può effettuare l’utente (gesture). UserLocation : Indica se la posizione dell’utente deve essere mostrata all’interno della mappa Buildings, POI, 3DView : indicazioni del tipo di informazioni aggiuntive che devono essere evidenziate sulla mappa.
MKCoordinateRegion typedef struct { CLLocationCoordinate2D center; MKCoordinateSpan span; } MKCoordinateRegion; Per specificare l’area visualizzata all’interno della mappa è necessario creare una nuova istanza di MKCoordinateRegion. Tale struct possiede due proprietà: center : il punto centrale dell’area span : la dimensione dell’area visualizzata (che quindi influenza il livello di zoom)
CLLocationCoordinate2D Il punto centrale della region è un oggetto di tipo CLLocationCoordinate2D, che rappresenta un punto bidimensionale in termini di latitudine e longitudine. Per crearne una nuova istanza è sufficiente utilizzare la funzione CLLocationCoordinate2DMake(lat : Double, long:Double)
Creare una region Per creare la region è invece necessaria la seguente chiamata: MKCoordinateRegionMakeWithDistance(coordinates:CLLOcati onCoordinate2D, latMeters: Double, lonMeters: Double) dove gli ultimi due parametri specificano la dimensione latitudinale e longitudinale (in metri) della regione Per assegnare la region alla mappa basta invocare il metodo: map.setRegion(region, animated : Boolean).
Annotation Per mostrare dei marker nella mappa la classe di riferimento è MKPointAnnotation. Per istanziarlo è sufficiente usare il costruttore di default. Le principali proprietà sono: coordinate : la posizione in cui sarà mostrato il marker title, subtitle : informazioni mostrate al tap sul marker Per aggiungerlo alla mappa: map.addAnnotation(annotation)
Delegate Alla mappa è possibile associare un delegate in grado di gestire i principali eventi che possono essere generati: Aggiornamento della posizione dell’utente Errore in fase di localizzazione dell’utente Personalizzazione della View relativa ad un marker Selezione di un marker da parte dell’utente Modifica della regione correntemente visualizzata.
User Location Per accedere alla posizione dell’utente, è necessario configurare l’applicazione per richiedere tale permesso. Per farlo è necessario aprire il file info.plist, ed aggiungere una delle due chiavi specificate ( o entrambe), il cui valore sarà il messaggio mostrato all’utente quando i permessi saranno richiesti per la prima volta.
User Location E’ inoltre possibile gestire la posizione dell’utente senza far ricorso obbligatoriamente alle mappe. A tale scopo è presente la classe CLLocationManager. Il delegate è un oggetto di tipo CLLocationManagerDelegate, che gestisce i principali aggiornamenti della posizione dell’utente.