地面叠加层

请选择平台: Android iOS JavaScript

地面叠加层是地图上与纬度/经度坐标绑定的叠加层,会随着您拖动或缩放地图而移动。

简介

地面叠加层是固定在地图上的图像。与标记不同,地面叠加层的朝向与地球表面(而不是屏幕)朝向,因此旋转、倾斜或缩放地图将会改变图像的朝向。

如需添加地面叠加层,请创建一个同时定义了图标和边界的 GMSGroundOverlay 对象。如果没有指定任何一个,都会导致地面叠加层无法显示在地图上。您还可以选择指定将会影响地图上图像定位的其他设置。定义了必要的选项后,请设置此对象的 map 属性以添加叠加层。

添加叠加层

  1. 实例化一个新的 GMSGroundOverlay 对象。
  2. icon 属性设置为 UIImage 的实例。
  3. bounds 属性设置为 GMSCoordinateBounds 的实例。边界表示图片的西南角和东北角。
  4. 根据需要设置可选属性,例如 bearingzoomLevel
  5. 设置 map 属性 - 图像会显示在地图上。

下例展示了如何将地面叠加层添加到现有的 GMSMapView 对象。

Swift

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;
      

移除叠加层

通过将 GMSGroundOverlaymap 属性设置为 nil,您可以从地图中移除地面叠加层。此外,通过调用 GMSMapView clear 方法,您也可以移除地图上当前的所有叠加层(包括地面叠加层)。

Swift

mapView.clear()
      

Objective-C

[mapView clear];
      

将地面叠加层添加到地图后,如果您想对其进行修改,请务必保留 GMSGroundOverlay 对象。稍后您可以通过更改此对象来修改该地面叠加层。

Swift

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 上的方法列表。