GMSMapView 类参考


概览

这是 Google Maps SDK for iOS 的主类,也是与地图相关的所有方法的入口点。

地图应使用 -init 或 -initWithOptions: 构造函数之一进行实例化。

与所有 UIKit 对象类似,GMSMapView只能通过主线程读取和修改。从其他线程调用这些方法将导致异常或未定义的行为。

公共成员函数

(instancetype)- init
 使用 CGRectZero 和默认选项进行初始化。
(instancetype)- initWithOptions:
 使用指定选项创建新的地图视图。
(instancetype)- initWithFrame:
(可为 null 的实例类型)- initWithCoder
(instancetype)- initWithFrame:camera
 构建并返回地图视图,其中包含框架和相机目标。
(instancetype)- initWithFrame:mapID:camera:
 构建并返回包含帧、地图 ID 和镜头目标的地图视图。
(void) - startRendering
 指示此地图为其渲染程序启动。
(void) - stopRendering
 指示此地图关闭其渲染程序。
(void) - 清除
 清除已添加到地图中的所有标记,包括标记、多段线和地面叠加层。
(void) - setMinZoom:maxZoom:
 设置 minZoommaxZoom
(nullable GMSCameraPosition *) - cameraForBounds:insets
 构建一个使用padding呈现boundsGMSCameraPosition
(void) - moveCamera
 根据 update 更改相机。
(BOOL) - areEqualForRenderingPosition:position
 考虑到内部使用的精度级别和转换效果,检查给定的镜头位置是否实际上会导致镜头以相同的方式渲染。
(GMSFeatureLayer
< GMSPlaceFeature * > *)
- featureLayerOfFeatureType
 返回指定类型的地图项图层。
(GMSDatasetFeatureLayer *)- datasetFeatureLayerOfDatasetID
 返回指定数据集的数据集地图项图层。
(void) - invalidateLayoutForAccessoryView
 使配件视图失效,并触发该视图的重新布局。
(void) - setHeaderAccessoryView
 设置配件视图在导航界面主标题下方的位置。
(void) - animateToCameraPosition
 以动画方式将此地图的镜头设置为 cameraPosition
(void) - animateToLocation
 作为 animateToCameraPosition:,但仅更改镜头的位置(即从当前位置更改为 location)。
(void) - animateToZoom
 作为 animateToCameraPosition:,但仅更改镜头的缩放级别。
(void) - animateToBearing
 作为 animateToCameraPosition:,但仅更改镜头的方向角(以度为单位)。
(void) - animateToBrowsingAngle
 作为 animateToCameraPosition:,但仅更改镜头的视角(以度为单位)。
(void) - animateWithCameraUpdate
 cameraUpdate 应用于当前镜头,然后根据 animateToCameraPosition: 使用结果。
(void) - didBeginPanGesture
 应在应用的 CPMapTemplateDelegate 方法 -mapTemplateDidBeginPanGesture: 实现中调用此方法,以便为 CarPlay 地图模板实现平移手势。
(void) - didUpdatePanGestureWithTranslation:velocity
 应在应用的 CPMapTemplateDelegate 方法 -mapTemplate:didUpdatePanGestureWithTranslation: 的实现中调用此方法,以便为 CarPlay 地图模板实现平移手势。
(void) - didEndPanGestureWithVelocity
 应通过应用的 CPMapTemplateDelegate 方法 -mapTemplate:didEndPanGestureWithVelocity: 的实现调用此方法,以便为 CarPlay 地图模板实现平移手势。
(BOOL) - enableNavigationWithSession
 使用给定的导航会话在此地图视图中开始导航。

静态公共成员函数

(instancetype)+ mapWithFrame:camera:
 构建并返回包含框架和相机目标的地图视图。
(instancetype)+ mapWithFrame:mapID:camera:
 用于构建和返回包含帧、地图 ID 和镜头目标的地图视图的便捷初始化程序。

属性

IBOutlet id< GMSMapViewDelegate >委托
 GMSMapView 代理。
GMSCameraPositioncamera
 控制镜头,用于定义地图的朝向。
GMSProjection投影
 返回GMSProjection对象,您可以使用该对象在屏幕坐标和纬度/经度坐标之间进行转换。
BOOL myLocationEnabled
 控制是否启用“我的位置”圆点和精确度圆圈。
CLLocation * myLocation
 如果“我的位置”已启用,系统会显示绘制设备位置圆点的位置。
GMSMarkerselectedMarker
 选定的标记。
BOOL trafficEnabled
 控制地图是否在绘制路况数据(如果有)。
GMSMapViewTypemapType
 控制应显示的地图图块类型。
GMSMapStylemapStyle
 控制地图的样式。
UIUserInterfaceStyleoverrideUserInterfaceStyle
 将地图更改为所需的 [UIUserInterfaceStyle](https://developer.apple.com/documentation/uikit/uiuserinterfacestyle?language=objc)。
float minZoom
 最小缩放级别(镜头可能缩小到最远的位置)。
float maxZoom
 最大缩放级别(镜头最接近地球的距离)。
BOOL buildingsEnabled
 如果已设置,则会显示 3D 建筑(如果有)。
BOOL indoorEnabled
 设置是否显示室内地图(如果可用)。
GMSIndoorDisplayindoorDisplay
 获取 GMSIndoorDisplay 实例,以便观察或控制室内数据显示的各个方面。
GMSUISettings设置
 获取GMSUISettings对象,该对象用于控制地图的用户界面设置。
UIEdgeInsets内边距
 控制视图的“可见”区域。
GMSMapViewPaddingAdjustmentBehaviorpaddingAdjustmentBehavior
 控制如何向内边距值添加安全区域边衬区。
BOOL accessibilityElementsHidden
 默认值为 YES。
GMSMapLayer
 用于图层的自定义 CALayer 类型的访问器。
GMSFrameRatepreferredFrameRate
 控制渲染帧速率。
GMSCoordinateBoundscameraTargetBounds
 如果不为 nil,则限制镜头目标,使手势不会导致镜头目标离开指定的边界。
GMSMapCapabilityFlagsmapCapabilities
 当前时刻可用的所有有条件可用的功能(取决于 mapID 或其他地图设置)。
IBOutlet ID
< GMSMapViewNavigationUIDelegate >
navigationUIDelegate
 GMSMapView的代理,用于接收导航界面事件的回调。
BOOL navigationEnabled
 用于指明此地图是否启用了导航功能。
GMSNavigator导航器
 GMSMapView的导航器,用于请求路线和启动精细导航。
GMSRoadSnappedLocationProviderroadSnappedLocationProvider
 允许订阅道路贴靠位置更新。
GMSLocationSimulatorlocationSimulator
 可让您模拟设备位置。
GMSNavigationCameraModecameraMode
 相机的模式,用于确定当 navigationEnabled 属性设置为 YES 时的行为。
GMSNavigationCameraPerspectivefollowingPerspective
 跟踪设备位置时所用的相机视角。
GMSNavigationTravelModetravelMode
 出行方式,用于确定提取哪种类型的路线以及确定设备路线的方式。
GMSNavigationLightingModelightingMode
 光照模式决定了应使用哪种配色方案来渲染地图。
BOOL shouldDisplaySpeedLimit
 决定在导航处于活动状态且速度限制数据可用时是否应显示速度限制。
BOOL shouldDisplaySpeedometer
 指定是否显示速度计图标。
UILayoutGuide * navigationHeaderLayoutGuide
 被导航标题覆盖的矩形。
UILayoutGuide * navigationFooterLayoutGuide
 被导航页脚覆盖的矩形。
GMSNavigationRouteCalloutFormatrouteCalloutFormat
 指定要使用的路线标注格式(默认、时间或距离)。
float followingZoomLevel
 导航期间的自定义缩放级别。
GMSRoadSnappedLocationProviderroadSnappedMyLocationSource
 用于为此地图视图设置“我的位置”提供程序。

(请注意,这些不是成员函数。)

NSString *常量kGMSAccessibilityCompass
 罗盘按钮的无障碍功能标识符。
NSString *常量kGMSAccessibilityMyLocation
 “我的位置”按钮的无障碍功能标识符。
NSString *常量kGMSAccessibilityOutOfQuota
 “配额不足”错误标签的无障碍功能标识符。

成员函数文档

-(实例类型)init

使用 CGRectZero 和默认选项进行初始化。

- (instancetype) initWithOptions: (非 null GMSMapViewOptions *) options

使用指定选项创建新的地图视图。

此方法会复制选项对象的值。

- (instancetype) initWithFrame: (CGRect) 框架
-(可为 null 的实例类型)initWithCoder (NSCoder *) 编码器
+ (instancetype) mapWithFrame: (CGRect) 框架
摄像头: (GMSCameraPosition *) 相机

构建并返回包含框架和相机目标的地图视图。

+ (instancetype) mapWithFrame: (CGRect) 框架
mapID: (GMSMapID *) mapID
摄像头: (GMSCameraPosition *) 相机

用于构建和返回包含帧、地图 ID 和镜头目标的地图视图的便捷初始化程序。

- (instancetype) initWithFrame: (CGRect) 框架
摄像头: (GMSCameraPosition *) 相机

构建并返回地图视图,其中包含框架和相机目标。

注意:
此 API 已废弃。请改用 -init 或 -initWithOptions:。
- (instancetype) initWithFrame: (CGRect) 框架
mapID: (GMSMapID *) mapID
摄像头: (GMSCameraPosition *) 相机

构建并返回包含帧、地图 ID 和镜头目标的地图视图。

注意:
此 API 已废弃。请改用 -init 或 -initWithOptions:。
- (void) startRendering

指示此地图为其渲染程序启动。

这是可选操作,并且遵循幂等原则。

注意:
此 API 已废弃。此方法已过时,并将在未来的版本中移除。
- (void) stopRendering

指示此地图关闭其渲染程序。

这是可选操作,并且遵循幂等原则。

注意:
此 API 已废弃。此方法已过时,并将在未来的版本中移除。
- (void) 清除

清除已添加到地图中的所有标记,包括标记、多段线和地面叠加层。

这不会清除可见位置圆点或重置当前的 mapType。

- (void) setMinZoom: (float)  minZoom
maxZoom: (float)  maxZoom

设置 minZoommaxZoom

此方法要求最小值小于或等于最大值,否则将抛出名称为 NSRangeException 的异常。

- (nullable GMSCameraPosition *) cameraForBounds: (GMSCoordinateBounds *) 边界
边衬区: (UIEdgeInsets) 边衬区

构建一个使用padding呈现boundsGMSCameraPosition

镜头将采用零方向角和倾斜度(即朝向北方并直接面向地球)。此方法会考虑该GMSMapView的框架和内边距。

如果边界无效,此方法将返回 nil 相机。

- (void) moveCamera (GMSCameraUpdate *) update

根据 update 更改相机。

相机更改是即时的(没有动画)。

- (BOOL) areEqualForRenderingPosition: (GMSCameraPosition *) position
位置: (GMSCameraPosition *) otherPosition

考虑到内部使用的精度级别和转换效果,检查给定的镜头位置是否实际上会导致镜头以相同的方式渲染。

- (GMSFeatureLayer<GMSPlaceFeature *> *)featureLayerOfFeatureType (GMSFeatureType) featureType

返回指定类型的地图项图层。

地图项图层必须在 Cloud 控制台中配置。

如果此地图上不存在指定类型的图层,或者未启用数据驱动型样式,或者未使用 Metal 渲染框架,则生成的图层的 isAvailable 将为 NO,并且不会响应任何调用。

需要使用 Metal 渲染程序。如需了解如何启用 Metal,请访问 https://developers.google.com/maps/documentation/ios-sdk/config#use-metal

- (GMSDatasetFeatureLayer *) datasetFeatureLayerOfDatasetID: (NSString *)  datasetID

返回指定数据集的数据集地图项图层。

数据集 ID 必须在 Cloud 控制台中配置。

如果此地图上不存在具有指定 ID 的数据集,或者未启用数据驱动型样式,则生成的图层的 isAvailable 将为 NO,并且不会响应任何调用。

- (void) invalidateLayoutForAccessoryView: (UIView< GMSNavigationAccessoryView > *) accessoryView

使配件视图失效,并触发该视图的重新布局。

视图必须是当前配件视图之一。如果指导处于非活动状态,则此调用为 NO-OP 指令。

- (void) setHeaderAccessoryView: (可为 null 的 UIView< GMSNavigationAccessoryView > *) headerAccessoryView

设置配件视图在导航界面主标题下方的位置。

传递 nil 值会移除配件视图。如果指导处于非活动状态,则此调用为 NO-OP 指令。

@note 如果地图视图很短,SDK 会因为空间有限而隐藏配件视图。系统会在内部管理这些视图,以优化地图的显示。

- (void) animateToCameraPosition: (GMSCameraPosition *) cameraPosition

以动画方式将此地图的镜头设置为 cameraPosition

- (void) animateToLocation: (CLLocationCoordinate2D) 位置

作为 animateToCameraPosition:,但仅更改镜头的位置(即从当前位置更改为 location)。

- (void) animateToZoom (float)  缩放

作为 animateToCameraPosition:,但仅更改镜头的缩放级别。

此值由 [kGMSMinZoomLevel, kGMSMaxZoomLevel] 限制。

- (void) animateToBearing (CLLocationDirection) 方向角

作为 animateToCameraPosition:,但仅更改镜头的方向角(以度为单位)。

零表示正北。

- (void) animateToVisibilityAngle (双精度) viewingAngle

作为 animateToCameraPosition:,但仅更改镜头的视角(以度为单位)。

根据与地球的相对距离,该值的最小值为 0(即垂直朝下),且朝向地平线的 30 度到 45 度之间。

- (void) animateWithCameraUpdate (GMSCameraUpdate *) cameraUpdate

cameraUpdate 应用于当前镜头,然后根据 animateToCameraPosition: 使用结果。

应在应用的 CPMapTemplateDelegate 方法 -mapTemplateDidBeginPanGesture: 实现中调用此方法,以便为 CarPlay 地图模板实现平移手势。

- (void) DidUpdatePanGestureWithTranslation: (CGPoint) 翻译
速度: (CGPoint) velocity

应在应用的 CPMapTemplateDelegate 方法 -mapTemplate:didUpdatePanGestureWithTranslation: 的实现中调用此方法,以便为 CarPlay 地图模板实现平移手势。

- (void) didEndPanGestureWithVelocity (CGPoint) 速度

应通过应用的 CPMapTemplateDelegate 方法 -mapTemplate:didEndPanGestureWithVelocity: 的实现调用此方法,以便为 CarPlay 地图模板实现平移手势。

- (BOOL) enableNavigationWithSession (GMSNavigationSession *) navigationSession

使用给定的导航会话在此地图视图中开始导航。

注意:
,以便最有效地利用内存和 CPU,请先调用此方法,然后再针对此地图视图调用任何其他与导航相关的方法。
返回
表示导航是否已成功启动(例如,如果尚未接受条款及条件,则返回“否”)。

- (NSString* const) kGMSAccessibilityCompass [related]

罗盘按钮的无障碍功能标识符。

- (NSString* const) kGMSAccessibilityMyLocation [related]

“我的位置”按钮的无障碍功能标识符。

- (NSString* const) kGMSAccessibilityOutOfQuota [related]

“配额不足”错误标签的无障碍功能标识符。


属性说明

- (IBOutlet id<GMSMapViewDelegate>) 委托 [read, write, assign]

GMSMapView 代理。

- (GMSCameraPosition*) 镜头 [read, write, copy]

控制镜头,用于定义地图的朝向。

修改此媒体资源是即时的。

- (GMSProjection*)投影 [read, assign]

返回GMSProjection对象,您可以使用该对象在屏幕坐标和纬度/经度坐标之间进行转换。

这是当前投影的快照,不会在镜头移动时自动更新。它表示最后绘制的GMSMapView帧的投影,或者表示镜头已明确设置的镜头或刚刚创建的地图时的投影,即将呈现的帧。此值永远不会为 nil。

- (BOOL) myLocationEnabled [read, write, assign]

控制是否启用“我的位置”圆点和精确度圆圈。

默认值为 NO。

- (CLLocation*) myLocation [read, assign]

如果“我的位置”已启用,系统会显示绘制设备位置圆点的位置。

如果停用,或者已启用但没有可用的位置数据,则此值为 nil。此属性可通过 KVO 进行观察。

- (GMSMarker*) selectedMarker [read, write, assign]

选定的标记。

设置该属性会选择一个特定标记,并在其上显示信息窗口。如果该属性为非 nil,则将其设为 nil 会取消选择相应标记,并隐藏信息窗口。此属性可通过 KVO 进行观察。

- (BOOL) trafficEnabled [read, write, assign]

控制地图是否在绘制路况数据(如果有)。

这取决于是否有流量数据。默认值为 NO。

- (GMSMapViewType) mapType [read, write, assign]

控制应显示的地图图块类型。

默认值为 kGMSTypeNormal。

- (GMSMapStyle*) mapStyle [read, write, assign]

控制地图的样式。

非 nil mapStyle 只有在 mapType 为 Normal 时才适用。

- (UIUserInterfaceStyle) overrideUserInterfaceStyle [read, write, assign]

将地图更改为所需的UIUserInterfaceStyle

这会替换默认的 UIKit 行为,并默认为 UIUserInterfaceStyleLight,以确保向后兼容性。这会影响普通地图类型和地形地图类型的配色方案。

-(浮点数)minZoom [read, assign]

最小缩放级别(镜头可能缩小到最远的位置)。

默认值为 kGMSMinZoomLevel。使用 -setMinZoom:maxZoom: 进行了修改。

-(浮点数)maxZoom [read, assign]

最大缩放级别(镜头最接近地球的距离)。

默认值为 kGMSMaxZoomLevel。使用 -setMinZoom:maxZoom: 进行了修改。

- (BOOL) buildingsEnabled [read, write, assign]

如果已设置,则会显示 3D 建筑(如果有)。

默认值为 YES。

在向地图添加自定义图块层时,这样做可能会很有用,可让地图在高缩放级别下更加清晰。更改此值会导致所有图块短暂失效。

- (BOOL) indoorEnabled [read, write, assign]

设置是否显示室内地图(如果可用)。

默认值为 YES。

如果设为“否”,室内数据的缓存可能会被清除,最终用户当前选择的任何楼层可能会被重置。

- (GMSIndoorDisplay*) indoorDisplay [read, assign]

获取 GMSIndoorDisplay 实例,以便观察或控制室内数据显示的各个方面。

- (GMSUISettings*)设置 [read, assign]

获取GMSUISettings对象,该对象用于控制地图的用户界面设置。

- (UIEdgeInsets) 内边距 [read, write, assign]

控制视图的“可见”区域。

通过应用内边距,可以创建围绕视图边缘的区域,该区域将包含地图数据,但不包含界面控件。

如果内边距不平衡,视图的视觉中心将视情况移动。内边距还会影响 projection 属性,因此可见区域将不会包含内边距区域。GMSCameraUpdatefitToBounds 可确保同时考虑该内边距和所请求的任何内边距。

此属性可在基于 UIView 的动画块内添加动画效果。

控制如何向内边距值添加安全区域边衬区。

与内边距一样,安全区域边衬区会在设备安全区域内定位地图控件,例如罗盘、“我的位置”按钮和楼层选择器。

默认值为 kGMSMapViewPaddingAdjustmentBehaviorAlways。

- (BOOL) accessibilityElementsHidden [read, write, assign]

默认值为 YES。

如果设为“否”,GMSMapView会为叠加层对象(例如GMSMarkerGMSPolyline)生成辅助功能元素。

此属性遵循非正式的 UIAccessibility 协议,但默认值 YES 除外。

- (GMSMapLayer*) 图层 [read, retain]

用于图层的自定义 CALayer 类型的访问器。

- (GMSFrameRate) preferredFrameRate [read, write, assign]

控制渲染帧速率。

默认值为 kGMSFrameRatemaximum。

- (GMSCoordinateBounds*) cameraTargetBounds [read, write, assign]

如果不为 nil,则限制镜头目标,使手势不会导致镜头目标离开指定的边界。

当前时刻可用的所有有条件可用的功能(取决于 mapID 或其他地图设置)。

不包含始终可用的功能。

- (IBOutlet id<GMSMapViewNavigationUIDelegate>) navigationUIDelegate [read, write, assign]

GMSMapView的代理,用于接收导航界面事件的回调。

- (BOOL) navigationEnabled [read, write, assign]

用于指明此地图是否启用了导航功能。

如果为“是”,则地图上可以显示路线和精细导航路线,相机可以进入以下模式,当相机没有跟随设备位置时,会显示“重新置中”按钮。

如果用户未接受 Google 导航条款及条件,则设置此属性不会产生任何影响。要显示条款及条件对话框,请参阅 GMSNavigationServices 上的方法。

- (GMSNavigator*) 导航器 [read, assign]

GMSMapView的导航器,用于请求路线和启动精细导航。

如果用户未接受 Google 导航条款及条件,此值将为 nil。要显示条款及条件对话框,请参阅 GMSNavigationServices 上的方法。

允许订阅道路贴靠位置更新。

如果用户未接受 Google 导航条款及条件,此值将为 nil。要显示条款及条件对话框,请参阅 GMSNavigationServices 上的方法。

可让您模拟设备位置。

模拟位置会影响 V 形在地图上的位置、精细导航的进度以及道路已贴靠位置信息提供程序提供的更新。

如果用户未接受 Google 导航条款及条件,此值将为 nil。要显示条款及条件对话框,请参阅 GMSNavigationServices 上的方法。

- (GMSNavigationCameraMode) cameraMode [read, write, assign]

相机的模式,用于确定当 navigationEnabled 属性设置为 YES 时的行为。

如需了解可用模式,请参阅 GMSNavigationCameraMode

跟踪设备位置时所用的相机视角。

必须将 navigationEnabled 属性设置为 YES,并将 cameraMode 设置为 GMSNavigationCameraModeFollowing 才能使此视角生效。

- (GMSNavigationTravelMode) travelMode [read, write, assign]

出行方式,用于确定提取哪种类型的路线以及确定设备路线的方式。

在驾车模式下,设备路线取决于设备方向,而在骑行或步行模式下,路线则取决于设备面对的罗盘方向。设备路线由设备位置标记的方向表示,并由 GMSRoadSnappedLocationProvider 报告。

- (GMSNavigationLightingMode) lightingMode [read, write, assign]

光照模式决定了应使用哪种配色方案来渲染地图。

它还用于确定各种界面元素的默认颜色。

- (BOOL) shouldDisplaySpeedLimit [read, write, assign]

决定在导航处于活动状态且速度限制数据可用时是否应显示速度限制。

默认值为 NO。

- (BOOL) shouldDisplaySpeedometer [read, write, assign]

指定是否显示速度计图标。

启用后,在导航期间,速度计图标将显示在底角上,用于指示车辆行驶速度。如果有可靠的速度限制数据,速度限制图标还会显示在速度计图标上。速度计图标的文字和背景可以有不同的颜色,具体取决于速度提醒的严重程度。

如果启用了“重新居中”按钮,那么显示“重新中心”按钮时,速度限制和速度计图标会暂时隐藏。

- (UILayoutGuide*) navigationHeaderLayoutGuide [read, assign]

被导航标题覆盖的矩形。

标题隐藏时的高度为零。

- (UILayoutGuide*) navigationFooterLayoutGuide [read, assign]

被导航页脚覆盖的矩形。

页脚隐藏时的高度为零。

指定要使用的路线标注格式(默认、时间或距离)。

-(浮点数)followingZoomLevel [read, write, assign]

导航期间的自定义缩放级别。

设置此值会在相机跟随设备位置时替换默认 Navigation SDK 缩放级别(即 cameraMode 等于 GMSNavigationCameraModeFollowing)。如果未应使用缩放级别替换值,则可以将此值设为 GMSNavigationNoFollowingZoomLevel

用于为此地图视图设置“我的位置”提供程序。

通常,地图视图的“我的位置”点和精确度圈由设备的实际位置决定。设置此属性后,“我的位置”点和精确度圈将以来自指定位置提供程序的道路贴靠位置驱动。要恢复正常行为,请将此属性设置为 nil。

当为此地图视图启用 navigationEnabled 时,此方法不会产生任何影响。