GMSMapView 類別參考資料


總覽

這是 Google Maps SDK for iOS 的主要類別,也是所有地圖相關方法的進入點。

地圖應使用其中一個建構函式 -init 或 -initWithOptions: 例項化。

GMSMapView 只能從主執行緒讀取和修改,與所有 UIKit 物件類似。如果從其他執行緒呼叫這些方法,將會產生例外狀況或未定義的行為。

公開成員函式

(instancetype)- init
 使用 CGRectZero 和預設選項初始化。
(instancetype)- initWithOptions:
 以指定的選項建立新的地圖檢視。
(instancetype)- initWithFrame:
(可為空值的例項類型)- initWithCoder:
(instancetype)- initWithFrame:camera:
 建構並傳回地圖檢視,包含影格和攝影機目標。
(instancetype)- initWithFrame:mapID:camera:
 建構並傳回包含頁框、地圖 ID 和攝影機目標的地圖檢視。
(void) - startRendering
 指示這張地圖啟動轉譯器。
(void) - stopRendering
 指示這張地圖關閉轉譯器。
(void) - 清除
 清除已加至地圖的所有標記,包括標記、折線和區域疊加層。
(void) - setMinZoom:maxZoom:
 設定 minZoommaxZoom
(nullable GMSCameraPosition *) - cameraForBounds:insets:
 建構GMSCameraPosition,以 padding 顯示 bounds
(void) - moveCamera:
 根據 update 變更相機。
(BOOL) - areEqualForRenderingPosition:position:
 檢查指定相機位置是否真的會導致相機算繪相同,並將內部使用的精確度和變形納入考量。
(GMSFeatureLayer
< GMSPlaceFeature * > *)
- featureLayerOfFeatureType:
 傳回指定類型的地圖項目圖層。
(void) - invalidateLayoutForAccessoryView:
 讓配件檢視畫面失效,並觸發該檢視畫面的重新版面配置。
(void) - setHeaderAccessoryView:
 設定配件檢視畫面在導覽 UI 主要標題下方的位置。
(void) - animateToCameraPosition:
 為這張地圖的相機加入 cameraPosition 動畫。
(void) - animateToLocation:
 做為 animateToCameraPosition:,但是僅變更相機的位置 (例如,從目前位置變更為 location)。
(void) - animateToZoom:
 做為 animateToCameraPosition:,但只會變更相機的縮放等級。
(void) - animateToBearing:
 做為 animateToCameraPosition:,但只會改變相機的航向 (以度為單位)。
(void) - animateToInspectAngle:
 做為 animateToCameraPosition:,但是僅變更相機的視角 (以度為單位)。
(void) - animateWithCameraUpdate:
 cameraUpdate 套用至目前的相機,然後按照 animateToCameraPosition: 使用結果。
(BOOL) - enableNavigationWithSession:
 使用指定的導覽工作階段,在此地圖檢視中開始導航。

靜態成員函式

(instancetype)+ mapWithFrame:camera:
 建構並傳回含有影格和攝影機目標的地圖檢視。
(instancetype)+ mapWithFrame:mapID:camera:
 便利初始化工具,可建構並傳回內含影格、地圖 ID 和攝影機目標的地圖檢視畫面。

資源

IBOutlet ID<GMSMapViewDelegate >委派
 GMSMapView委派。
GMSCameraPosition攝影機
 控制相機,以定義地圖的方向。
GMSProjection投影
 傳回一個GMSProjection物件,可用於在螢幕座標和經緯度座標之間進行轉換。
BOOLmyLocationEnabled
 控制是否啟用「我的位置」圓點和精確度圓圈。
CLLocation * myLocation
 如果已啟用「我的位置」,會顯示裝置定位點的繪製位置。
GMSMarkerselectedMarker
 選取的標記。
BOOLtrafficEnabled
 控制地圖是否正在繪製車流量資料 (如果有的話)。
GMSMapViewTypemapType
 控制應顯示的地圖圖塊類型。
GMSMapStylemapStyle
 控制地圖的樣式。
float minZoom
 最小縮放 (相機最遠可縮小)。
float maxZoom
 最大縮放 (最靠近相機可能位於地球)。
BOOLbuildingsEnabled
 如果設定這項設定,系統會在有 3D 建築物時顯示 3D 建築物。
BOOLindoorEnabled
 設定是否顯示室內地圖 (如適用)。
GMSIndoorDisplayindoorDisplay
 取得GMSIndoorDisplay 實例,可觀察或控制室內資料顯示的各個方面。
GMSUISettings設定
 取得GMSUISettings物件,負責控制地圖的使用者介面設定。
UIEdgeInsets邊框間距
 控制檢視的「顯示」區域。
GMSMapViewPaddingAdjustmentBehaviorpaddingAdjustmentBehavior
 控管如何在邊框間距值中加入安全區域插邊。
BOOLaccessibilityElementsHidden
 預設為 YES。
GMSMapLayer圖層
 用於圖層的自訂 CALayer 類型存取子。
GMSFrameRatepreferredFrameRate
 控制轉譯影格速率。
GMSCoordinateBoundscameraTargetBounds
 如果不為 nil,請限制攝影機目標,讓手勢無法離開指定邊界。
GMSMapCapabilityFlagsmapCapabilities
 目前可用的所有條件式 (取決於 mapID 或其他地圖設定) 功能。
IBOutlet ID
< GMSMapViewNavigationUIDelegate >
navigationUIDelegate
 代表GMSMapView 的委派代表,可接收導航 UI 事件的回呼。
BOOLnavigationEnabled
 是否要啟用這張地圖的導航功能。
GMSNavigator導航工具
 這個路線的導航器GMSMapView允許要求路線和轉彎的指引。
GMSRoadSnappedLocationProviderroadSnappedLocationProvider
 允許訂閱道路固定位置更新。
GMSLocationSimulatorlocationSimulator
 可讓你模擬裝置位置。
GMSNavigationCameraModecameraMode
 相機的模式,當 NavigationEnabled 屬性設為 YES 時,決定其行為。
GMSNavigationCameraPerspectivefollowingPerspective
 追蹤裝置位置時使用的相機視角。
GMSNavigationTravelModetravelMode
 這個交通模式會決定系統擷取的路線類型,以及裝置課程的判定方式。
GMSNavigationLightingModelightingMode
 光源模式可決定轉譯地圖時應使用哪種色彩配置。
BOOLshouldDisplaySpeedLimit
 決定在啟用導航且可取得速限資料時,是否應顯示速限。
BOOLshouldDisplaySpeedometer
 指定是否要顯示計速器圖示。
UILayoutGuide * navigationHeaderLayoutGuide
 導覽標題覆蓋的矩形。
UILayoutGuide * navigationFooterLayoutGuide
 導覽頁尾所涵蓋的矩形。
GMSNavigationRouteCalloutFormatrouteCalloutFormat
 指定要使用的路徑摘要格式 (預設、時間或距離)。
float followingZoomLevel
 自訂瀏覽時的縮放等級。
GMSRoadSnappedLocationProviderroadSnappedMyLocationSource
 設定這個地圖檢視的「我的位置」提供者。

(請注意,這些不是成員函式)。

NSString *constkGMSAccessibilityCompass
 指南針按鈕的無障礙 ID。
NSString *constkGMSAccessibilityMyLocation
 「我的位置」按鈕的無障礙 ID。
NSString *constkGMSAccessibilityOutOfQuota
 「超出配額」錯誤標籤的無障礙 ID。

成員函式說明文件

- (執行個體類型) init

使用 CGRectZero 和預設選項初始化。

- (instancetype) initWithOptions: (非空值GMSMapViewOptions *) 選項

以指定的選項建立新的地圖檢視。

選項物件的值會透過這個方法複製。

- (執行個體類型) initWithFrame: (CGRect) 影格
- (可為空值的 instancetype) initWithCoder: (NSCoder *) 編碼器
+ (instancetype) mapWithFrame: (CGRect) 影格
相機: (GMSCameraPosition *) 相機

建構並傳回含有影格和攝影機目標的地圖檢視。

+ (instancetype) mapWithFrame: (CGRect) 影格
mapID: (GMSMapID *) mapID
相機: (GMSCameraPosition *) 相機

便利初始化工具,可建構並傳回內含影格、地圖 ID 和攝影機目標的地圖檢視畫面。

- (執行個體類型) initWithFrame: (CGRect) 影格
相機: (GMSCameraPosition *) 相機

建構並傳回地圖檢視,包含影格和攝影機目標。

注意:
已淘汰。請改用 -init 或 -initWithOptions:。
- (執行個體類型) initWithFrame: (CGRect) 影格
mapID: (GMSMapID *) mapID
相機: (GMSCameraPosition *) 相機

建構並傳回包含頁框、地圖 ID 和攝影機目標的地圖檢視。

注意:
已淘汰。請改用 -init 或 -initWithOptions:。
- (void) startRendering

指示這張地圖啟動轉譯器。

這是選用欄位,也是冪等的。

注意:
已淘汰。這個方法已過時,並將在日後推出的版本中移除。
- (void) stopRendering

指示這張地圖關閉轉譯器。

這是選用欄位,也是冪等的。

注意:
已淘汰。這個方法已過時,並將在日後推出的版本中移除。
- (void) clear

清除已加至地圖的所有標記,包括標記、折線和區域疊加層。

這不會清除可見的位置點,也不會重設目前的 mapType。

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

設定 minZoommaxZoom

這個方法預期最小值小於或等於最大值,否則將擲回名稱為 NSRangeException 的例外狀況。

- (nullable GMSCameraPosition *) cameraForBounds: (GMSCoordinateBounds *) 範圍
插邊: (UIEdgeInsets) insets

建構GMSCameraPosition,以 padding 顯示 bounds

相機會有零航向和傾斜 (也就是說,面向北方且正朝向地球)。這佔據了這個框架和邊框間距GMSMapView

如果界限無效,此方法會傳回 nil 相機。

- (void) moveCamera: (GMSCameraUpdate *) 更新

根據 update 變更相機。

相機瞬間變更 (沒有動畫)。

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

檢查指定相機位置是否真的會導致相機算繪相同,並將內部使用的精確度和變形納入考量。

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

傳回指定類型的地圖項目圖層。

您必須在 Cloud 控制台中設定地圖項目圖層。

如果指定類型的圖層不存在或未啟用資料導向樣式,或是未使用 Metal 算繪架構,則產生的圖層會是 NO,且不會回應任何呼叫。

需要金屬轉譯器。如要瞭解如何啟用 Metal,請前往 https://developers.google.com/maps/documentation/ios-sdk/config#use-metal

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

讓配件檢視畫面失效,並觸發該檢視畫面的重新版面配置。

檢視畫面必須是目前配件檢視畫面的其中一個。如果指引無效,此呼叫即為 NO-OP 的指示。

- (void) setHeaderAccessoryView: (可為空值的 UIView<GMSNavigationAccessoryView > *) headerAccessoryView

設定配件檢視畫面在導覽 UI 主要標題下方的位置。

傳送 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:,但只會改變相機的航向 (以度為單位)。

0 表示正北。

- (void) animateToSeeAngle: (雙精度浮點數) viewingAngle

做為 animateToCameraPosition:,但是僅變更相機的視角 (以度為單位)。

這個值會調整為最小的零 (例如面向正下方),然後根據地平線的範圍調整 30 到 45 度之間。

- (void) animateWithCameraUpdate: (GMSCameraUpdate *) cameraUpdate

cameraUpdate 套用至目前的相機,然後按照 animateToCameraPosition: 使用結果。

- (BOOL) enableNavigationWithSession: (GMSNavigationSession *) navigationSession

使用指定的導覽工作階段,在此地圖檢視中開始導航。

傳回:
指出是否已成功啟動導航 (舉例來說,如果尚未接受條款及細則,則會傳回 NO)。

- (NSString* const) kGMSAccessibilityCompass [related]

指南針按鈕的無障礙 ID。

- (NSString* const) kGMSAccessibilityMyLocation [related]

「我的位置」按鈕的無障礙 ID。

- (NSString* const) kGMSAccessibilityOutOfQuota [related]

「超出配額」錯誤標籤的無障礙 ID。


資源說明文件

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

GMSMapView委派。

- (GMSCameraPosition*) 相機 [read, write, copy]

控制相機,以定義地圖的方向。

系統會立即修改這個屬性。

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

傳回一個GMSProjection物件,可用於在螢幕座標和經緯度座標之間進行轉換。

這是目前投影的快照,不會在相機移動時自動更新。它代表最近繪製的投射方式GMSMapView 框架或者,或明確設置了相機或者剛剛建立的地圖,這個框架。絕對不會。

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

控制是否啟用「我的位置」圓點和精確度圓圈。

預設值為 NO。

- (CLLocation*) myLocation [read, assign]

如果已啟用「我的位置」,會顯示裝置定位點的繪製位置。

如果已停用或已啟用此功能,但沒有位置資料可用,就不會套用這項設定。這個屬性可透過 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 時,才套用非 nil mapStyle。

- (浮點值) minZoom [read, assign]

最小縮放 (相機最遠可縮小)。

預設為 kGMSMinZoomLevel。修改為 -setMinZoom:maxZoom:。

- (浮點值) maxZoom [read, assign]

最大縮放 (最靠近相機可能位於地球)。

預設為 kGMSMaxZoomLevel。修改為 -setMinZoom:maxZoom:。

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

如果設定這項設定,系統會在有 3D 建築物時顯示 3D 建築物。

預設為 YES。

將自訂地圖方塊圖層新增至地圖時,這個做法可能很有用,以便在高縮放等級清楚顯示。變更這個值會導致所有圖塊短暫失效。

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

設定是否顯示室內地圖 (如適用)。

預設為 YES。

如果設為「否」,系統可能會清除室內資料快取,而且使用者目前選取的所有樓層都可能會重設。

- (GMSIndoorDisplay*) indoorDisplay [read, assign]

取得GMSIndoorDisplay 實例,可觀察或控制室內資料顯示的各個方面。

- (GMSUISettings*) 設定 [read, assign]

取得GMSUISettings物件,負責控制地圖的使用者介面設定。

- (UIEdgeInsets) 邊框間距 [read, write, assign]

控制檢視的「顯示」區域。

您可以建立檢視畫面邊緣周圍的邊框間距,建立其中會包含地圖資料,但不會包含 UI 控制項。

如果邊框間距不平衡,檢視畫面的視覺中心會視情況移動。邊框間距也會影響 projection 屬性,因此可見的區域就不會包含邊框間距區域。GMSCameraUpdate FitToBounds 會確保將此邊框間距和任何要求的邊框間距納入考量。

這個屬性可以在 UIView 式動畫區塊內以動畫呈現。

控管如何在邊框間距值中加入安全區域插邊。

就像邊框間距、安全區域插邊中的位置地圖控制項,例如指南針、「我的位置」按鈕和樓層挑選器。

預設值為 kGMSMapViewPaddingAdjustmentBehavior。

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

預設為 YES。

如果設為 NO,GMSMapView 將為疊加層物件 (例如 GMSMarkerGMSPolyline) 產生無障礙元素。

這個屬性遵循非正式的 UI 無障礙通訊協定,但預設值 YES 除外。

- (GMSMapLayer*) 圖層 [read, retain]

用於圖層的自訂 CALayer 類型存取子。

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

控制轉譯影格速率。

預設值為 kGMSFrameRateMax。

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

如果不為 nil,請限制攝影機目標,讓手勢無法離開指定邊界。

目前可用的所有條件式 (取決於 mapID 或其他地圖設定) 功能。

不提供一律可用功能。

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

代表GMSMapView 的委派代表,可接收導航 UI 事件的回呼。

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

是否要啟用這張地圖的導航功能。

如果為 是,可以在地圖上顯示路線和即時路線指示,攝影機可以進入下列模式,而且當相機沒有跟著裝置位置移動時,就會顯示重新置中按鈕。

如果使用者尚未接受 Google 導覽條款及細則,設定這個屬性就不會有任何作用。如要顯示條款及細則對話方塊,請參閱GMSNavigationServices 中的方法。

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

這個路線的導航器GMSMapView允許要求路線和轉彎的指引。

如果使用者尚未接受 Google 導航條款及細則,就不會接受。如要顯示條款及細則對話方塊,請參閱GMSNavigationServices 中的方法。

允許訂閱道路固定位置更新。

如果使用者尚未接受 Google 導航條款及細則,就不會接受。如要顯示條款及細則對話方塊,請參閱GMSNavigationServices 中的方法。

可讓你模擬裝置位置。

模擬位置會影響地圖上 V 形標記的位置、即時路線導航的進度,以及路邊位置提供者所提供的更新。

如果使用者尚未接受 Google 導航條款及細則,就不會接受。如要顯示條款及細則對話方塊,請參閱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]

導覽頁尾所涵蓋的矩形。

頁尾隱藏時,高度為 0。

指定要使用的路徑摘要格式 (預設、時間或距離)。

- (浮點值) followingZoomLevel [read, write, assign]

自訂瀏覽時的縮放等級。

設定這個值後,當相機追蹤裝置位置時 (即 cameraMode 等於 GMSNavigationCameraModeFollowing) 時,將覆寫預設的 Navigation SDK 縮放等級。如果沒有使用縮放等級覆寫設定,可以設為 GMSNavigationNoFollowingZoomLevel

設定這個地圖檢視的「我的位置」提供者。

地圖檢視的「我的位置」圓點和精確度圓圈通常取決於實際裝置位置。設定這個屬性後,「我的位置」圓點和精確度圓圈將由指定的位置提供者所提供的道路旋轉位置所驅動。如要恢復成正常行為,請將這個屬性設為 nil。

當為這個地圖檢視開啟 navigationEnabled 時,這個方法不會起任何作用。