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

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