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

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

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

Введение

Наземное наложение – это изображение, закрепленное в определенном месте карты. В отличие от маркера, его ориентация рассчитывается относительно земной поверхности, а не относительно экрана, поэтому она меняется при вращении, наклоне и приближении карты.

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

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

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

Показанный ниже код добавляет наземное наложение в существующий объект 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;
      

Как удалить наложение

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

Swift

mapView.clear()
      

Objective-C

[mapView clear];
      

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

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;
      

События

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