GMSMapView 类参考


概览

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

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

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

公开成员函数

(instancetype)- 初始化
 使用 CGRectZero 和默认选项进行初始化。
(instancetype)- initWithOptions:
 使用指定选项创建新的地图视图。
(instancetype)- initWithFrame:
(可为 null 的实例类型)- initWithCoder:
(instancetype)- initWithFrame:camera:
 构建并返回具有帧和镜头目标的地图视图。
(instancetype)- initWithFrame:mapID:camera:
 构建并返回包含帧、地图 ID 和镜头目标的地图视图。
(void) - startRenderingstartRendering
 指示此地图启动其渲染程序。
(void) -stopRenderingstopRendering
 指示此地图关闭其渲染程序。
(void) - 清除
 清除已添加到地图中的所有标记,包括标记、多段线和地面叠加层。
(void) - setMinZoom:maxZoom:setMinZoom:maxZoom:
 设置 minZoommaxZoom
(可为 null 的GMSCameraPosition *)- cameraForBounds:insets:
 构建一个通过padding显示boundsGMSCameraPosition
(void) - moveCamera:
 根据 update 更改相机。
(BOOL)-areEqualForRenderingPosition:position:areEqualForRenderingPosition:position:
 考虑到内部使用的精度和转换级别,检查给定的相机位置实际上是否会导致相机以相同的方式渲染。
GMSFeatureLayer
) <GMSPlaceFeature * >*)
- featureLayerOfFeatureType:
 返回指定类型的地图项图层。
(GMSDatasetFeatureLayer *)- datasetFeatureLayerOfDatasetID
 返回指定数据集的数据集地图项图层。
(void) - animateToCameraPosition:
 将此地图的相机呈现为 cameraPosition 的动画效果。
(void) - animateToLocation:
 与 animateToCameraPosition: 相同,但仅更改镜头的位置(即从当前位置更改为 location)。
(void) - animateToZoom:
 与 animateToCameraPosition: 相同,但仅更改镜头的缩放级别。
(void) - animateToBearing:
 与 animateToCameraPosition: 相同,但仅更改镜头的方位(以度为单位)。
(void) - animateToViewingAngle:
 与 animateToCameraPosition: 相同,但仅更改镜头的视角(以度为单位)。
(void) - animateWithCameraUpdate:
 cameraUpdate 应用于当前镜头,然后按照 animateToCameraPosition: 使用结果。

静态公开成员函数

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

属性

IBOutlet ID<GMSMapViewDelegate >委托
 GMSMapView委托。
GMSCameraPosition *camera
 控制镜头,镜头会定义地图的朝向。
GMSProjection *投影
 返回一个GMSProjection对象,您可以使用该对象在屏幕坐标和纬度/经度坐标之间进行转换。
BOOL myLocationEnabled
 控制是否启用“我的位置”圆点和精度圆。
CLLocation *myLocation
 如果启用了“我的位置”,就会显示设备位置点的绘制位置。
GMSMarker *selectedMarker
 所选标记。
BOOL trafficEnabled
 控制地图是否正在绘制路况数据(如果有)。
GMSMapViewTypemapType
 用于控制应显示的地图图块类型。
GMSMapStyle *mapStyle
 控制地图的样式。
UIUserInterfaceStyleoverrideUserInterfaceStyle
 将地图更改为所需的 [UIUserInterfaceStyle](https://developer.apple.com/documentation/uikit/uiuserinterfacestyle?language=objc)。
浮点数minZoom
 最小缩放级别(相机可以缩小的最远距离)。
浮点数maxZoom
 最大缩放级别(镜头可能最接近地球)。
BOOL buildingsEnabled
 设置完毕后,系统将会显示 3D 建筑(如果有)。
BOOL indoorEnabled
 设置是否显示室内地图(如果有)。
GMSIndoorDisplay *indoorDisplay
 获取允许观察或控制室内数据显示的各个方面的GMSIndoorDisplay实例。
GMSUISettings *设置
 获取GMSUISettings对象,该对象用于控制地图的界面设置。
UIEdgeInsets内边距
 用于控制视图区域
GMSMapViewPaddingAdjustmentBehaviorpaddingAdjustmentBehavior
 控制安全区域边衬区添加到内边距值的方式。
BOOL accessibilityElementsHidden
 默认值为 YES。
GMSMapLayer *图层
 用于图层的自定义 CALayer 类型的访问器。
GMSFrameRatepreferredFrameRate
 控制渲染帧速率。
GMSCoordinateBounds *cameraTargetBounds
 如果不是 nil,则限制镜头目标,以使手势无法使其离开指定边界。
GMSMapCapabilityFlagsmapCapabilities
 当前可用且视条件而定(取决于 mapID 或其他地图设置)的所有功能。

(请注意,这些并非成员函数。)

NSString *constkGMSAccessibilityCompass
 罗盘按钮的无障碍标识符。
NSString *constkGMSAccessibilityMyLocation
 “我的位置”的无障碍标识符按钮。
NSString *constkGMSAccessibilityOutOfQuota
 “配额不足”的可访问性标识符错误标签。

成员函数文档

- (instancetype) init

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

- (instancetype) initWithOptions: (nonnull 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: (浮点数) minZoom
maxZoom: (浮点数) maxZoom

设置 minZoommaxZoom

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

-(可为 null 的GMSCameraPosition *)cameraForBounds: (GMSCoordinateBounds *) 边界
边衬区: (UIEdgeInsets) 边衬区

构建一个通过padding显示boundsGMSCameraPosition

镜头将具有零方位和倾斜度(即朝北且直视地球)。这会将该GMSMapView的框架和内边距考虑在内。

如果边界无效,此方法将返回 nil 镜头。

- (void) moveCamera: (GMSCameraUpdate *) update

根据 update 更改相机。

镜头更改即瞬间完成(无动画)。

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

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

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

地图项图层必须在 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) animateToCameraPosition: (GMSCameraPosition *) cameraPosition

将此地图的相机呈现为 cameraPosition 的动画效果。

- (void) animateToLocation: (CLLocationCoordinate2D) 位置

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

- (void) animateToZoom: (浮点数) 缩放

与 animateToCameraPosition: 相同,但仅更改镜头的缩放级别。

此值由 [kGMSMinZoomLevel, kGMSMaxZoomLevel] 限制。

- (void) animateToBearing: (CLLocationDirection) 方位

与 animateToCameraPosition: 相同,但仅更改镜头的方位(以度为单位)。

零表示正北。

- (void) animateToViewingAngle: (双人) viewingAngle

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

根据与地球的相对距离,此值将取值下限为 0(即,正面朝下),且与地平线相距 30 度到 45 度之间。

- (void) animateWithCameraUpdate: (GMSCameraUpdate *) cameraUpdate

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


- (NSString* const) kGMSAccessibilityCompass [related]

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

-(NSString* 常量)kGMSAccessibilityMyLocation [related]

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

- (NSString* const) kGMSAccessibilityOutOfQuota [related]

“配额不足”的可访问性标识符错误标签。


属性说明

- (IBOutlet id<GMSMapViewDelegate>) delegate [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]

控制地图的样式。

仅当 mapType 为 Normal 时,MapStyle 才会应用非 nil。

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

将地图更改为所需的 [UIUserInterfaceStyle](https://developer.apple.com/documentation/uikit/uiuserinterfacestyle?language=objc)。

这将替换默认的 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。

如果设为 NO,GMSMapView将为叠加层对象(如GMSMarkerGMSPolyline)生成无障碍元素。

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

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

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

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

控制渲染帧速率。

默认值为 kGMSFrameRateMax。

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

如果不是 nil,则限制镜头目标,以使手势无法使其离开指定边界。

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

不包括始终可用的功能。