GMSMapView 类参考


概览

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

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

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

公开成员函数

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

静态公开成员函数

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

属性

IBOutlet id< GMSMapViewDelegate >委托
 GMSMapView委托。
GMSCameraPositioncamera
 控制镜头,镜头会定义地图的朝向。
GMSProjection投影
 返回一个GMSProjection对象,您可以使用该对象在屏幕坐标和纬度/经度坐标之间进行转换。
BOOL myLocationEnabled
 控制是否启用“我的位置”圆点和精度圆。
CLLocation * myLocation
 如果启用了“我的位置”,就会显示设备位置点的绘制位置。
GMSMarkerselectedMarker
 所选标记。
BOOL trafficEnabled
 控制地图是否正在绘制路况数据(如果有)。
GMSMapViewTypemapType
 用于控制应显示的地图图块类型。
GMSMapStylemapStyle
 控制地图的样式。
UIUserInterfaceStyleoverrideUserInterfaceStyle
 将地图更改为所需的 UIUserInterfaceStyle
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 或其他地图设置)的所有功能。

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

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

成员函数文档

- (instancetype) 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 *) 位置
位置: (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 (float)  缩放

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

此值由 [kGMSMinZoomLevel, kGMSMaxZoomLevel] 限制。

- (void) animateToBearing (CLLocationDirection) 方位

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

零表示正北。

- (void) animateToBrowsingAngle (双倍) 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

这将替换默认的 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 或其他地图设置)的所有功能。

不包括始终可用的功能。