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

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