Наземные наложения — это наложения на карте, которые привязаны к координатам широты и долготы, поэтому они перемещаются при перетаскивании или масштабировании карты.
Введение
Наложение земли — это изображение, прикрепленное к карте. В отличие от маркеров , наложения земли ориентированы на поверхность Земли, а не на экран, поэтому вращение, наклон или масштабирование карты изменят ориентацию изображения.
Чтобы добавить наложение земли, создайте объект 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
.