GMSMapView 类参考


概览

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

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

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

公开成员函数

(实例类型)- init
 使用 CGRectZero 和默认选项进行初始化。
(实例类型)- initWithOptions
 使用指定选项创建新的地图视图。
(实例类型)- initWithFrame:
(实例类型)- initWithCoder
(实例类型)- initWithFrame:camera
 构建并返回包含框架和镜头目标的地图视图。
(实例类型)- initWithFrame:mapID:camera:
 构建并返回包含框架、地图 ID 和镜头目标的地图视图。
(void) - startRendering
 指示此地图启动其渲染程序。
(void) - stopRendering
 指示此地图关闭其渲染程序。
(void) - 清除
 清除添加到地图中的所有标记,包括标记、多段线和地面叠加层。
(void) - setMinZoom:maxZoom:
 设置 minZoommaxZoom
(nullable GMSCameraPosition *) - cameraForBounds:insets
 构建一个GMSCameraPositionpadding形式呈现bounds
(void) - moveCamera
 根据 update 更改相机。
(BOOL) - areEqualForRenderingPosition:position
 考虑到精度级别和内部使用的转换效果,检查给定的相机位置是否真的会使相机以相同的方式渲染。
(GMSFeatureLayer
< GMSPlaceFeature * > *)
- featureLayerOfFeatureType
 返回指定类型的地图项图层。
(void) - animateToCameraPosition
 以动画方式将此地图的镜头设置为 cameraPosition
(void) - animateToLocation
 采用 animateToCameraPosition:,但只会更改镜头的位置(即从当前位置更改为 location)。
(void) - animateToZoom
 采用 animateToCameraPosition:,但仅更改镜头的缩放级别。
(void) - animateToBearing
 采用 animateToCameraPosition:,但仅更改镜头的方向角(以度为单位)。
(void) - animateToVisibilityAngle
 作为 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
 控制地图的样式。
float minZoom
 最小缩放级别(镜头可以缩小到最远的位置)。
float maxZoom
 最大缩放级别(镜头最接近地球的位置)。
BOOL buildingsEnabled
 如果设置,系统将在适用的情况下显示 3D 建筑。
BOOL indoorEnabled
 设置是否显示室内地图(如果有)。
GMSIndoorDisplayGMSIndoorDisplay * indoorDisplay
 获取GMSIndoorDisplay实例,该实例可用于观察或控制室内数据显示的各个方面。
GMSUISettingsGMSUISettings * 设置
 获取用于控制地图的用户界面设置的 GMSUISettings 对象。
UIEdgeInsets内边距
 控制视图的“可见”区域。
GMSMapViewPaddingAdjustmentBehaviorpaddingAdjustmentBehavior
 控制如何向内边距值添加安全区域边衬区。
BOOL accessibilityElementsHidden
 默认值为 YES。
GMSMapLayer
 用于图层的自定义 CALayer 类型的访问器。
GMSFrameRatepreferredFrameRate
 控制渲染帧速率。
GMSCoordinateBoundscameraTargetBounds
 如果不是 nil,则限制镜头目标,使手势不会使该目标离开指定边界。
GMSMapCapabilityFlagsmapCapabilities
 当前时间所有可用(取决于 mapID 或其他地图设置)的功能。

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

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

成员函数文档

- (instancetype) init

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

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

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

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

- (instancetype) initWithFrame: (CGRect)
- (instancetype) initWithCoder (NSCoder *) 编码器
+ (instancetype) mapWithFrame: (CGRect)
相机: (GMSCameraPosition *) 相机

构建并返回带有框架和镜头目标的地图视图。

+ (instancetype) mapWithFrame: (CGRect)
mapID: (GMSMapID *) mapID
相机: (GMSCameraPosition *) 相机

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

- (instancetype) initWithFrame: (CGRect)
相机: (GMSCameraPosition *) 相机

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

注意:
已弃用。请改用 -init 或 -initWithOptions:。
- (instancetype) initWithFrame: (CGRect)
mapID: (GMSMapID *) mapID
相机: (GMSCameraPosition *) 相机

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

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

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

这是可选操作,并且具有幂等性。

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

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

这是可选操作,并且具有幂等性。

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

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

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

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

设置 minZoommaxZoom

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

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

构建一个GMSCameraPositionpadding形式呈现bounds

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

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

- (void) moveCamera (GMSCameraUpdate *) update

根据 update 更改相机。

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

- (BOOL) areEqualForRenderingPosition: (GMSCameraPosition *) position
排名: (GMSCameraPosition *) otherPosition

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

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

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

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

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

- (void) animateToCameraPosition: (GMSCameraPosition *) cameraPosition

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

- (void) animateToLocation: (CLLocationCoordinate2D)  地理位置

采用 animateToCameraPosition:,但只会更改镜头的位置(即从当前位置更改为 location)。

- (void) animateToZoom: (float)  缩放

采用 animateToCameraPosition:,但仅更改镜头的缩放级别。

该值由 [kGMSMinZoomLevel, kGMSMaxZoomLevel] 限制。

- (void) animateToBearing: (CLLocationDirection) 方位

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

零表示正北。

- (void) animateToVisibilityAngle: (双精度) viewingAngle

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

该值不得小于零(即正面朝下),朝向地平线的最小值为 30 到 45 度,具体取决于与地球的相对距离。

- (void) animateWithCameraUpdate: (GMSCameraUpdate *) cameraUpdate

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


- (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)mapTypemapType [read, write, assign]

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

默认值为 kGMSTypeNormal。

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

控制地图的样式。

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

-(浮点数)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) padding [read, write, assign]

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

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

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

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

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

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

默认值为 kGMSMapViewPaddingAdjustmentBehaviorAlways。

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

默认值为 YES。

如果设置为 NO,则GMSMapView会为叠加层对象生成辅助功能元素,例如GMSMarkerGMSPolyline

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

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

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

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

控制渲染帧速率。

默认值为 kGMSFrameRatemaximum。

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

如果不是 nil,则限制镜头目标,使手势不会使该目标离开指定边界。

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

不包含始终可用的功能。