一切就绪!

着手开发前,请先阅读我们的开发者文档

激活 Google Maps SDK for iOS

为帮助您起步,我们将引导您在 Google Developers Console 中先完成几项任务:

  1. 创建或选择项目
  2. 激活 Google Maps SDK for iOS
  3. 创建相应密钥
继续

底面叠层

底面叠层是地图上与纬度/经度坐标绑定的叠层,因此当您拖动或缩放地图时,底面叠层会随之移动。

简介

底面叠层是固定在地图上的图像。与标记有所不同,底面叠层的朝向是以地球表面(而不是屏幕)为参照物,所以旋转、倾斜或缩放地图将会改变图像的朝向。

如需添加底面叠层,请创建一个同时定义了图标和边界的 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,从而将底面叠层从地图上删除。 或者,您也可以通过调用 GMSMapViewclear 方法删除目前地图上的所有叠层(包括底面叠层)。

Swift

let camera = GMSCameraPosition.camera(withLatitude:40.71,
                                      longitude: -74.22,
                                      zoom:11)
let mapView = GMSMapView.map(withFrame: .zero, camera: camera)
...
mapView.clear()

Objective-C

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:40.742
                                                        longitude:-74.174
                                                             zoom:6];
mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
...
[mapView clear];

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

Swift

let overlay = GMSGroundOverlay(position: newark, icon: icon, zoomLevel: 10)
overlay.map = mapView
...
overlay.isTappable = true

Objective-C

GMSGroundOverlay *overlay =
    [GMSGroundOverlay groundOverlayWithPosition:newark
                                           icon:icon
                                      zoomLevel:10];
overlay.map = mapView;
...
overlay.tappable = YES;

事件

您可以侦听地图上发生的事件,例如当用户点按某个叠层的时候。 要侦听事件,您必须实现 GMSMapViewDelegate 协议。 请参阅事件指南以及 GMSMapViewDelegate 中的方法列表。

发送以下问题的反馈:

此网页
Google Maps SDK for iOS
Google Maps SDK for iOS
需要帮助?请访问我们的支持页面