地面叠加层是地图上与纬度/经度坐标绑定的叠加层,会随着您拖动或缩放地图而移动。
简介
地面叠加层是固定在地图上的图像。与标记不同,地面叠加层朝向地球表面而非屏幕的相反方向,因此旋转、倾斜或缩放地图将会改变图像的朝向。
如需添加地面叠加层,请创建一个同时定义了图标和边界的 GMSGroundOverlay
对象。如果未指定这两个属性,地面叠加层将不会在地图上显示。您还可以选择指定一些会影响地图上图像放置的其他设置。定义必要的选项后,请设置此对象的 map
属性以添加叠加层。
添加叠加层
- 实例化一个新的
GMSGroundOverlay
对象。 - 将
icon
属性设置为UIImage
实例。 - 将
bounds
属性设置为GMSCoordinateBounds
实例。边界表示图像的西南角和东北角。 - 根据需要设置可选属性,例如
bearing
和zoomLevel
。 - 设置
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;
移除叠加层
您可以将 GMSGroundOverlay
的 map
属性设置为 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
上的相关方法列表。