Gli overlay del suolo sono overlay sulla mappa legati alle coordinate di latitudine/longitudine, pertanto si spostano quando trascini o esegui lo zoom sulla mappa.
Introduzione
Un overlay del suolo è un'immagine fissata a una mappa. A differenza degli indicatori, gli overlay del suolo sono orientati verso la superficie terrestre anziché lo schermo. Pertanto, ruotando, inclinando o aumentando lo zoom la mappa cambierà l'orientamento dell'immagine.
Per aggiungere un overlay al suolo, crea un oggetto GMSGroundOverlay
che definisca sia un'icona sia un limite. Se non specifichi uno di questi due elementi, l'overlay del suolo
non verrà visualizzato sulla mappa. Puoi anche specificare impostazioni aggiuntive
che influiranno sul posizionamento dell'immagine sulla mappa. Dopo aver definito le
opzioni necessarie, imposta la proprietà map
di questo oggetto per aggiungere l'overlay.
Aggiungere un overlay
- Crea l'istanza di un nuovo oggetto
GMSGroundOverlay
- Imposta la proprietà
icon
su un'istanza diUIImage
. - Imposta la proprietà
bounds
su un'istanza diGMSCoordinateBounds
. I confini rappresentano gli angoli sud-ovest e nord-est dell'immagine. - Imposta proprietà facoltative, come
bearing
ezoomLevel
, come preferisci. - Imposta la proprietà
map
: l'immagine viene visualizzata sulla mappa.
L'esempio seguente mostra come aggiungere un overlay del suolo a un oggetto GMSMapView
esistente.
Swift
let southWest = CLLocationCoordinate2D(latitude: 40.712216, longitude: -74.22655) let northEast = CLLocationCoordinate2D(latitude: 40.773941, longitude: -74.12544) let overlayBounds = GMSCoordinateBounds(coordinate: southWest, coordinate: northEast) // Image from http://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg let icon = UIImage(named: "newark_nj_1922") let overlay = GMSGroundOverlay(bounds: overlayBounds, icon: icon) overlay.bearing = 0 overlay.map = mapView
Objective-C
CLLocationCoordinate2D southWest = CLLocationCoordinate2DMake(40.712216,-74.22655); CLLocationCoordinate2D northEast = CLLocationCoordinate2DMake(40.773941,-74.12544); GMSCoordinateBounds *overlayBounds = [[GMSCoordinateBounds alloc] initWithCoordinate:southWest coordinate:northEast]; // Image from http://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg UIImage *icon = [UIImage imageNamed:@"newark_nj_1922"]; GMSGroundOverlay *overlay = [GMSGroundOverlay groundOverlayWithBounds:overlayBounds icon:icon]; overlay.bearing = 0; overlay.map = mapView;
Rimuovere una sovrapposizione
Puoi rimuovere un overlay del suolo dalla mappa impostando la proprietà map
di GMSGroundOverlay
su nil
. In alternativa, puoi rimuovere tutti
gli overlay (compresi quelli del suolo attualmente presenti sulla mappa) richiamando il
metodo clear
GMSMapView
.
Swift
mapView.clear()
Objective-C
[mapView clear];
Se vuoi apportare modifiche a un overlay del suolo dopo averlo aggiunto alla mappa, assicurati di mantenere l'oggetto GMSGroundOverlay
. Puoi modificare l'overlay del suolo in un secondo momento apportando modifiche a questo oggetto.
Swift
let overlay = GMSGroundOverlay(bounds: overlayBounds, icon: icon) overlay.bearing = 0 overlay.map = mapView // ... overlay.isTappable = true
Objective-C
GMSGroundOverlay *overlay = [GMSGroundOverlay groundOverlayWithBounds:overlayBounds icon:icon]; overlay.bearing = 0; overlay.map = mapView; // ... overlay.tappable = YES;
Eventi
Puoi ascoltare gli eventi che si verificano sulla mappa, ad esempio quando un utente tocca un overlay. Per ascoltare gli eventi, devi implementare il protocollo GMSMapViewDelegate
. Consulta la guida agli eventi e l'elenco dei metodi su GMSMapViewDelegate
.