Nakładki na mapie są powiązane z współrzędnymi geograficznymi, więc poruszają się, gdy przeciągasz mapę lub ją powiększasz.
Wprowadzenie
Nakładka naziemna to obraz przymocowany do mapy. W odróżnieniu od znaczników nakładki na mapie są zorientowane względem powierzchni Ziemi, a nie ekranu, więc obracanie, przechylanie i powiększanie mapy zmienia orientację obrazu.
Aby dodać nakładkę na ziemię, utwórz obiekt GMSGroundOverlay
, który definiuje ikonę i granice. Jeśli nie określisz żadnej z tych wartości, nakładka terenu nie będzie widoczna na mapie. Opcjonalnie możesz określić dodatkowe ustawienia, które wpłyną na pozycjonowanie obrazu na mapie.
Po zdefiniowaniu niezbędnych opcji ustaw właściwość map
tego obiektu, aby dodać nakładkę.
Dodawanie nakładki
- Utwórz instancję nowego obiektu
GMSGroundOverlay
. - Ustaw właściwość
icon
na instancjęUIImage
. - Ustaw właściwość
bounds
na instancjęGMSCoordinateBounds
. Granice te odpowiadają południowo-zachodniemu i północno-wschodniemu wierzchołkowi obrazu. - W razie potrzeby ustaw właściwości opcjonalne, takie jak
bearing
izoomLevel
. - Ustaw właściwość
map
– obraz pojawi się na mapie.
W tym przykładzie pokazujemy, jak dodać nakładkę na ziemię do istniejącego obiektu GMSMapView
.
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;
Usuwanie nakładki
Możesz usunąć nakładkę naziemną z mapy, ustawiając w elementach GMSGroundOverlay
map
wartość nil
. Możesz też usunąć wszystkie nakładki (w tym nakładki naziemne widoczne na mapie), wywołując metodę GMSMapView
clear
.
Swift
mapView.clear()
Objective-C
[mapView clear];
Jeśli chcesz wprowadzić zmiany w nakładce na grunt po dodaniu jej do mapy, pamiętaj, aby nie zwalniać obiektu GMSGroundOverlay
. Możesz zmodyfikować nakładkę na ziemię, wprowadzając zmiany w tym obiekcie.
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;
Wydarzenia
Możesz nasłuchiwać zdarzeń, które występują na mapie, np. gdy użytkownik kliknie nakładkę. Aby nasłuchiwać zdarzeń, musisz zaimplementować protokół GMSMapViewDelegate
. Zapoznaj się z przewodnikiem po zdarzeniach i listą metod na stronie GMSMapViewDelegate
.