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

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

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

Введение

Наземное наложение — это изображение, прикрепленное к карте. В отличие от маркеров , наземные наложения ориентированы на поверхность Земли, а не на экран, поэтому вращение, наклон или масштабирование карты меняют ориентацию изображения.

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

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

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