Наземные наложения — это наложения на карту, привязанные к координатам широты/долготы, поэтому они перемещаются при перетаскивании или масштабировании карты.
Введение
Наземное наложение — это изображение, прикрепленное к карте. В отличие от маркеров , наземные наложения ориентированы на поверхность Земли, а не на экран, поэтому вращение, наклон или масштабирование карты меняют ориентацию изображения.
Чтобы добавить наложение на землю, создайте объект 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
Цель-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()
Цель-C
[mapView clear];
Если вы хотите внести изменения в наложение земли после того, как вы добавили его на карту, убедитесь, что вы сохранили объект GMSGroundOverlay
. Вы можете изменить наложение земли позже, внеся изменения в этот объект.
Быстрый
let overlay = GMSGroundOverlay(bounds: overlayBounds, icon: icon) overlay.bearing = 0 overlay.map = mapView // ... overlay.isTappable = true
Цель-C
GMSGroundOverlay *overlay = [GMSGroundOverlay groundOverlayWithBounds:overlayBounds icon:icon]; overlay.bearing = 0; overlay.map = mapView; // ... overlay.tappable = YES;
События
Вы можете прослушивать события, происходящие на карте, например, когда пользователь касается наложения. Для прослушивания событий необходимо реализовать протокол GMSMapViewDelegate
. См. руководство по событиям и список методов на GMSMapViewDelegate
.