本概览介绍了如何使用 Maps SDK for iOS 配置已添加到 iOS 应用的地图。
概览
将地图添加到应用后,您可以配置初始选项和运行时 地图设置。如需详细了解如何添加地图容器,请参阅添加 地图。
初始地图设置包括:
在运行时,您可以通过
更新
GMSMapView
对象。
地图选项
初始化地图视图时,可以使用
GMSMapViewOptions
。选项属性包括 frame
、camera
、mapID
或
backgroundColor
。
地图选项 | |
---|---|
帧 | 值:
CGRect 地图框架。默认值为 CGRectZero。
|
camera | 值:
GMSCameraPosition 默认地图镜头位置。
|
mapID | 值:
GMSMapID Google 地图 ID。可选参数。
|
backgroundColor | 值:
UIColor 默认值为 UIColor.lightGray
|
配置地图选项
您可以设置自己的选项属性,也可以将实例化的
将 GMSMapViewOptions
替换为 GMSMapView
的默认值。
Swift
let options = GMSMapViewOptions() options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6) let mapView = GMSMapView(options:options)
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:6]; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
以下示例展示了如何传递带有默认值的 GMSMapViewOptions
对象
直接发送到 GMSMapView
。
Swift
let options = GMSMapViewOptions() let mapView = GMSMapView(options:options) //initialized with default values
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; //initialized with default values
配置背景颜色
在深色模式下工作或在地图视图之间切换时,覆盖默认地图背景颜色可能会很有用。为此,可将
地图选项 backgroundColor
属性。
Swift
let options = GMSMapViewOptions() options.backgroundColor = UIColor.yellowColor let mapView = GMSMapView(options:options)
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.backgroundColor = UIColor.yellowColor; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
地图类型
您可以使用以下任意一种地图类型来自定义地图。地图类型约束 地图的整体表现形式。例如,一个地图集通常包含 重点显示边界的政治地图,以及显示边界的道路地图 城市或地区的所有道路。Maps SDK for iOS 提供了 以下地图类型:
地图类型 | |
---|---|
正常 | 值:
kGMSTypeNormal 典型的路线图。显示道路以及一些地图项建造者
以及河流等重要的自然特征道路和地图项标签
其他属性支持将地图配色方案设置为深色、浅色、
或遵循系统设置
|
混合 | 值:
kGMSTypeHybrid 同时添加了卫星照片数据和路线图。道路和地图项
其他标签也可见 |
卫星 | 值:
kGMSTypeSatellite 卫星照片数据。不显示道路和地图项标签。
|
地形 | 值:
kGMSTypeTerrain 地形数据。地图包含颜色、轮廓线和标签,
和透视着色此外,还会显示一些道路和标签。支持
将地图配色方案设为深色、浅色或遵循系统设置。
|
无 | 值:
kGMSTypeNone 没有地图图块。该地图不会渲染基本地图图块。此模式与功能块层结合使用非常有用。当地图类型为
设为 none。 |
更改地图类型
如需设置地图类型,请为 GMSMapView.mapType
分配新值
属性。例如,如需显示卫星地图类型:
Swift
let options = GMSMapViewOptions() options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6) let mapView = GMSMapView(options:options) mapView.mapType = .satellite
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:6]; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; mapView.mapType = kGMSTypeSatellite;
下面的选择器显示了 同一地点:
室内地图
在较高的缩放级别下,Maps SDK for iOS 会显示机场、购物中心、大型零售商店和公交站点等室内场所的楼层平面图。室内楼层平面图已集成到
“normal”地图类型 (kGMSTypeNormal
),
当用户放大地图时,地图则逐渐消失。
您可以停用室内地图,只需设置indoorEnabled
将GMSMapView
更改为NO
。
Swift
mapView.isIndoorEnabled = false
Objective-C
mapView.indoorEnabled = NO;
或者,您也可以只停用楼层选择器控件。
正在添加楼层平面图
select 中提供了楼层平面图 营业地点。 如果相关建筑物没有楼层平面图数据 突出显示,您可以:
路况图层
您可以授权用户查看在顶部叠加了交通密度信息的地图。这样可让用户直观了解本地的交通状况。您可以通过调用
该
trafficEnabled
方法。以下示例展示了路况图层在地图上的可能显示方式。
无障碍
默认情况下,地图上的辅助功能元素是隐藏的。您可以启用
通过设置 accessibilityElementsHidden
属性来实现此目的
将GMSMapView
更改为NO
。这会导致系统为
叠加层对象(例如 GMSMarker
和信息窗口、GMSPolyline
等)。
Swift
mapView.accessibilityElementsHidden = false
Objective-C
mapView.accessibilityElementsHidden = NO;
此属性遵循非正式的 UIAccessibility
协议,但
在 Maps SDK for iOS 中,默认值为 YES
。
我的位置
默认情况下,地图上不显示任何位置数据。您可以通过在 GMSMapView
上设置 myLocationEnabled
来启用蓝色的“我的位置”圆点和指南针方向。
Swift
mapView.isMyLocationEnabled = true
Objective-C
mapView.myLocationEnabled = YES;
启用此功能后,系统会通过
myLocation
属性。此媒体资源可能无法立即使用 -
例如,如果 iOS 提示用户允许访问这些数据。时间是
在此示例中为 nil
。
Swift
print("User's location: \(String(describing: mapView.myLocation))")
Objective-C
NSLog(@"User's location: %@", mapView.myLocation);
3D 建筑
近距离观看时,许多城市会显示 3D 建筑 下图中华盛顿西雅图的图片中。
您可以在 Swift 或 Objective-C 中设置相应的 GMSMapView
属性,以停用 3D 建筑,如下所示:
Swift
mapView.isBuildingsEnabled = false
Objective-C
[mapView setBuildingsEnabled:NO];
地图内边距
Google 地图旨在填充由 GMSMapView
定义的整个区域。
地图外观和行为的若干方面都由尺寸
视图:
- 摄像头的目标反映含内边距的区域的中心。
- 地图控件以地图边缘为参照物进行定位。
- 版权声明或 Google 徽标等法律信息沿地图底部边缘显示。
您可以利用 GMSMapView
.padding
属性。地图会继续填充
整个容器,但文字和控件定位、地图手势和相机
就像是被放置在一个更小的空间内一样。这会导致
进行以下更改:
- 使用 API 调用或按下按钮(例如罗盘按钮、“我的位置”按钮)进行的镜头移动会变成相对于内边距区域的移动。
GMSMapView
.projection
会返回一个投影,其中仅包含含内边距的 区域。- 界面控件会按指定的 。
设计与地图的某些部分重叠的界面时,内边距会很有用。 例如,在图像中,地图沿顶部边缘和右侧边缘设置了内边距。 可见的地图控件和法律文本将沿含内边距的边缘 而地图会继续填满整个容器 以蓝色显示在此示例中,您可以让菜单悬浮在地图右侧的上方,这样不会遮盖住地图控件。
如需向地图添加内边距,请创建一个 UIEdgeInsets
对象并将其传递给
GMSMapView
。padding
属性。
Swift
// Insets are specified in this order: top, left, bottom, right let mapInsets = UIEdgeInsets(top: 100.0, left: 0.0, bottom: 0.0, right: 300.0) mapView.padding = mapInsets
Objective-C
// Insets are specified in this order: top, left, bottom, right UIEdgeInsets mapInsets = UIEdgeInsetsMake(100.0, 0.0, 0.0, 300.0); mapView.padding = mapInsets;
地图配色方案
对于普通和地形类型的地图,您可以将地图配色方案设置为深色, 或者使用当前的系统设置。例如,你可以调暗或 根据一天当中的时段或者室内或室外使用,调亮地图配色方案 设备的实际情况
使用GMSMapView
overrideUserInterfaceStyle:
设置和更新地图配色方案。
Swift
let options = GMSMapViewOptions() // Map is init to use light mode by default. let mapView = GMSMapView(options: options) // Set map to use dark mode. mapView.overrideUserInterfaceStyle = .dark // Set map to use light mode. mapView.overrideUserInterfaceStyle = .light // Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle mapView.overrideUserInterfaceStyle = .unspecified
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; // Map is init to always use light mode. GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; // Set map to use dark mode. mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleDark; // Set map to use light mode. mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleLight; // Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleUnspecified;