Наземные наложения — это наложения на карте, привязанные к координатам широты/долготы, поэтому они перемещаются при перетаскивании или масштабировании карты.
Введение
Наземное наложение — это изображение, которое закреплено на карте. В отличие от маркеров , наземные наложения ориентированы относительно поверхности Земли, а не экрана, поэтому поворот, наклон или масштабирование карты изменят ориентацию изображения.
Чтобы добавить наложение земли, создайте объект 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
.