Nakładki na powierzchnię

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Wybierz platformę: Android iOS JavaScript

Nakładki na powierzchni są warstwami mapy, które są powiązane ze współrzędnymi szerokości i długości geograficznej, więc można je przesuwać przy powiększaniu lub pomniejszaniu mapy.

Wprowadzenie

Nakładka na poziomie terenu to obraz na stałe osadzony na mapie. W przeciwieństwie do znaczników nakładki na powierzchni ziemi są kierowane na powierzchnię Ziemi, a nie na ekran, dlatego obrót, przechylenie lub powiększenie mapy spowoduje zmianę orientacji obrazu.

Aby dodać nakładkę na powierzchnię, utwórz obiekt GMSGroundOverlay definiujący zarówno ikonę, jak i granice. Jeśli nie określisz żadnego z tych elementów, na powierzchnia nie pojawi się na mapie. Opcjonalnie możesz określić dodatkowe ustawienia wpływające na położenie zdjęcia na mapie. Po zdefiniowaniu niezbędnych opcji ustaw właściwość map tego obiektu, by dodać nakładkę.

Dodawanie nakładki

  1. Utwórz instancję nowego obiektu GMSGroundOverlay
  2. Ustaw właściwość icon na instancję UIImage.
  3. Ustaw właściwość bounds na instancję GMSCoordinateBounds. Granice są ustawione na południowy zachód i na północny wschód rogu.
  4. W razie potrzeby ustaw właściwości opcjonalne, takie jak bearing i zoomLevel.
  5. Ustaw właściwość map – zdjęcie pojawi się na mapie.

Poniższy przykład pokazuje, jak dodać nakładkę naziemną 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ę z ziemią z mapy, ustawiając we właściwości map w usłudze GMSGroundOverlay wartość nil. Możesz też usunąć wszystkie nakładki (w tym te na powierzchni ziemi, które są obecnie na mapie), wywołując metodę GMSMapView clear.

Swift

mapView.clear()
      

Objective-C

[mapView clear];
      

Jeśli chcesz zmienić nakładkę na powierzchni po dodaniu jej do mapy, pamiętaj, aby trzymać obiekt GMSGroundOverlay. Później możesz wprowadzić zmiany w nakładce 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;
      

Zdarzenia

Możesz nasłuchiwać zdarzeń występujących na mapie, np. gdy użytkownik kliknie nakładkę. Aby nasłuchiwać zdarzeń, musisz wdrożyć protokół GMSMapViewDelegate. Zobacz przewodnik po zdarzeniach i listę metod na GMSMapViewDelegate.