Gli overlay del suolo sono overlay sulla mappa legati alle coordinate di latitudine/longitudine, quindi si spostano quando trascini la mappa o ne aumenti lo zoom.
Introduzione
Un overlay del suolo è un'immagine fissa a una mappa. A differenza dei indicatori, gli overlay del suolo sono orientati in base alla superficie terrestre anziché allo schermo, pertanto ruotare, inclinare o aumentare lo zoom della mappa ne modifica l'orientamento.
Per aggiungere un overlay del suolo, crea un oggetto
GMSGroundOverlay
che definisce sia un'icona sia un confine. Se non specifichi nessuno dei due,
la sovrapposizione del suolo non verrà visualizzata sulla mappa. Se vuoi, puoi specificare impostazioni aggiuntive che influiscono sul posizionamento dell'immagine sulla mappa.
Dopo aver definito le opzioni necessarie, imposta la proprietà map
di questo oggetto per
aggiungere l'overlay.
Aggiunta di un overlay
- Creare un nuovo oggetto
GMSGroundOverlay
- Imposta la proprietà
icon
su un'istanza diUIImage
. - Imposta la proprietà
bounds
su un'istanza diGMSCoordinateBounds
. I limiti rappresentano gli angoli sud-ovest e nord-est dell'immagine. - Imposta le proprietà facoltative, ad esempio
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 un overlay
Puoi rimuovere un overlay del suolo dalla mappa impostando la proprietà map
di GMSGroundOverlay
su nil
. In alternativa, puoi rimuovere tutti gli overlay (inclusi gli overlay del suolo attualmente presenti sulla mappa) chiamando il metodo GMSMapView
clear
.
Swift
mapView.clear()
Objective-C
[mapView clear];
Se vuoi apportare modifiche a un overlay del terreno 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 accadono sulla mappa, ad esempio quando un utente tocca un overlay. Per ascoltare gli eventi, è necessario implementare il protocollo GMSMapViewDelegate
. Consulta la
guida agli eventi e l'elenco dei metodi su
GMSMapViewDelegate
.