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