Наземные наложения

Выберите платформу: Android iOS JavaScript

Наземные наложения — это наложения на карте, привязанные к координатам широты/долготы, поэтому они перемещаются при перетаскивании или масштабировании карты.

Введение

Наземное наложение — это изображение, закреплённое на карте. В отличие от маркеров , наземные наложения ориентированы относительно поверхности Земли, а не экрана, поэтому поворот, наклон или масштабирование карты изменят ориентацию изображения.

Чтобы добавить наложение земной поверхности, создайте объект GMSGroundOverlay , который определяет как значок, так и границы. Если не указать ни один из этих параметров, наложение земной поверхности не будет отображаться на карте. При желании вы можете указать дополнительные параметры, которые повлияют на расположение изображения на карте. После определения необходимых параметров настройте свойство map этого объекта, чтобы добавить наложение.

Добавление наложения

  1. Создать новый объект GMSGroundOverlay
  2. Установите свойство icon для экземпляра UIImage .
  3. Установите свойство bounds для экземпляра GMSCoordinateBounds . Границы представляют юго-западный и северо-восточный углы изображения.
  4. При необходимости задайте дополнительные свойства, такие как bearing и zoomLevel .
  5. Установите свойство map — изображение появится на карте.

В примере ниже показано, как добавить наложение земной поверхности к существующему объекту GMSMapView .

Быстрый

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;
      

Удаление наложения

Вы можете удалить наземное наложение с карты, установив свойство map объекта GMSGroundOverlay в значение nil . Кроме того, вы можете удалить все наложения (включая наземные наложения, которые в данный момент находятся на карте), вызвав метод clear объекта GMSMapView .

Быстрый

mapView.clear()
      

Objective-C

[mapView clear];
      

Если вы хотите внести изменения в наземное покрытие после его добавления на карту, убедитесь, что у вас сохранился объект GMSGroundOverlay . Вы сможете изменить наземное покрытие позже, внеся изменения в этот объект.

Быстрый

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;
      

События

Вы можете отслеживать события, происходящие на карте, например, касание пользователем наложения. Для этого необходимо реализовать протокол GMSMapViewDelegate . См. руководство по событиям и список методов GMSMapViewDelegate .