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

Введение
Наземное наложение – это изображение, закрепленное в определенном месте карты. В отличие от маркера, его ориентация рассчитывается относительно земной поверхности, а не относительно экрана, поэтому она меняется при вращении, наклоне и приближении карты.
Чтобы добавить наложение на землю, создайте объект GMSGroundOverlay, в котором определены значок и границы. Если не указать ни один из этих параметров, наложение не появится на карте. При желании вы также можете задать в нем настройки позиционирования.
Задав нужные параметры, установите свойство map этого объекта, чтобы добавить наложение.
Добавление наложения
- Создайте новый экземпляр объекта
GMSGroundOverlay. - Задайте для свойства
iconэкземплярUIImage. - Задайте для свойства
boundsэкземплярGMSCoordinateBounds. Границы представляют собой юго-западный и северо-восточный углы изображения. - При необходимости задайте дополнительные свойства, такие как
bearingиzoomLevel. - Задайте свойство
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.