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

Выберите платформу: 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
      

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 .