總覽
這是 Google Maps SDK for iOS 的主要類別,也是地圖所有相關方法的進入點。
地圖應使用其中一個建構函式 -init 或 -initWithOptions: 例項化。
GMSMapView 只能從主執行緒讀取和修改,類似於所有 UIKit 物件。從其他執行緒呼叫這些方法,會導致發生例外狀況或未定義的行為。
公開成員函式 | |
(instancetype) | - 初始化 |
使用 CGRectZero 和預設選項初始化。 | |
(instancetype) | - initWithOptions: |
使用指定的選項建立新的地圖檢視。 | |
(instancetype) | - initWithFrame: |
(可為空值的 instancetype) | - initWithCoder: |
(instancetype) | - initWithFrame:camera: |
建構並傳回具有影格和攝影機目標的地圖檢視。 | |
(instancetype) | - initWithFrame:mapID:camera: |
建構並傳回包含頁框、地圖 ID 和攝影機目標的地圖檢視。 | |
(void) | - startRendering |
告訴這張地圖強化轉譯器。 | |
(void) | - stopRendering |
指示這張地圖關閉轉譯器。 | |
(void) | - 清除 |
清除已加進地圖的所有標記,包括標記、折線和區域疊加層。 | |
(void) | - setMinZoom:maxZoom: |
可設定 minZoom 和 maxZoom 。 | |
(可為空值GMSCameraPosition *) | - cameraForBounds:insets: |
創建一個GMSCameraPosition,用 padding 呈現bounds 。 | |
(void) | - moveCamera: |
根據 update 變更相機。 | |
(BOOL) | - 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 * | 鏡頭 |
控制相機,這會定義地圖的方向。 | |
GMSProjection * | 投影 |
傳回一個GMSProjection 物件,可用來在螢幕座標和經緯度座標之間轉換。 | |
BOOL | myLocationEnabled |
控管是否啟用「我的位置」點和精確度圓形。 | |
CLLocation * | myLocation |
如果已啟用「我的位置」,則顯示裝置位置圓點繪製的位置。 | |
GMSMarker * | selectedMarker |
選取的標記。 | |
BOOL | trafficEnabled |
控制地圖是否正在繪製交通資料 (如果有的話)。 | |
GMSMapViewType | mapType |
控制應顯示的地圖方塊類型。 | |
GMSMapStyle * | mapStyle |
控制地圖樣式。 | |
UIUserInterfaceStyle | overrideUserInterfaceStyle |
將地圖變更為所需的 [UIUserInterfaceStyle](https://developer.apple.com/documentation/uikit/uiuserinterfacestyle?language=objc)。 | |
浮點值 | minZoom |
最小縮放 (鏡頭最遠的位置可能會縮小)。 | |
浮點值 | maxZoom |
最大縮放等級 (距離地球最近的相機可能為「地球」)。 | |
BOOL | buildingsEnabled |
設定後,畫面上會顯示 3D 建築物 (如果有的話)。 | |
BOOL | indoorEnabled |
設定是否顯示室內地圖 (如果有的話)。 | |
GMSIndoorDisplay * | indoorDisplay |
取得GMSIndoorDisplay執行個體,該例項可觀察或控制室內資料顯示畫面的各方面。 | |
GMSUISettings * | 設定 |
取得GMSUISettings物件,該物件控制地圖的使用者介面設定。 | |
UIEdgeInsets | 邊框間距 |
控制「顯示」也就是檢視區域 | |
GMSMapViewPaddingAdjustmentBehavior | paddingAdjustmentBehavior |
控管在邊框間距值中加入安全區域插邊的方式。 | |
BOOL | accessibilityElementsHidden |
預設值為 YES。 | |
GMSMapLayer * | 圖層 |
用於圖層的自訂 CALayer 類型的存取子。 | |
GMSFrameRate | preferredFrameRate |
控管轉譯影格速率。 | |
GMSCoordinateBounds * | cameraTargetBounds |
如果非 nil,則會限制攝影機目標,讓手勢無法離開指定邊界。 | |
GMSMapCapabilityFlags | mapCapabilities |
目前可使用的所有特定條件提供功能 (取決於 mapID 或其他地圖設定)。 | |
相關函式 | |
(請注意,這些並非成員函式)。 | |
NSString *const | kGMSAccessibilityCompass |
指南針按鈕的無障礙 ID。 | |
NSString *const | kGMSAccessibilityMyLocation |
「我的位置」的無障礙 ID按鈕。 | |
NSString *const | kGMSAccessibilityOutOfQuota |
「配額不足」的無障礙 ID錯誤標籤。 |
成員職能說明文件
- (執行個體類型) init |
使用 CGRectZero 和預設選項初始化。
- (執行個體類型) initWithOptions: | (nonnull GMSMapViewOptions *) | 選項 |
使用指定的選項建立新的地圖檢視。
這個方法會複製選項物件的值。
- (執行個體類型) initWithFrame: | (CGRect) | 影格 |
- (可為空值的執行個體類型) 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:。
- (無效) startRendering |
告訴這張地圖強化轉譯器。
此為選用與冪等的。
- 注意:
- 這項功能已淘汰,這個方法已過時,將在日後推出的版本中移除。
- (void) stopRendering |
指示這張地圖關閉轉譯器。
此為選用與冪等的。
- 注意:
- 這項功能已淘汰,這個方法已過時,將在日後推出的版本中移除。
- (避免) 清除 |
清除已加進地圖的所有標記,包括標記、折線和區域疊加層。
這不會清除可見的位置圓點,或重設目前的 mapType。
- (void) setMinZoom: | (浮點值) | minZoom | |
maxZoom: | (浮點值) | maxZoom | |
可設定 minZoom
和 maxZoom
。
這個方法會預期最小值小於或等於最大值,否則將擲回名稱為 NSRangeException 的例外狀況。
- (可為空值 GMSCameraPosition *) cameraForBounds: | (GMSCoordinateBounds *) | bounds | |
插邊: | (UIEdgeInsets) | 插邊 | |
創建一個GMSCameraPosition,用 padding
呈現bounds
。
相機會有零方位和傾斜角度 (例如面向北方,並且正視地球)。它採用了此框架和邊框間距GMSMapView包含的資訊。
如果界限無效,此方法會傳回 nil 相機。
- (void) moveCamera: | (GMSCameraUpdate *) | 更新 |
根據 update
變更相機。
相機會立即變更 (沒有動畫)。
- (BOOL) 是 EqualForRenderingPosition: | (GMSCameraPosition *) | position | |
位置: | (GMSCameraPosition *) | otherPosition | |
請根據內部使用的精確度與轉換程度,檢查指定相機位置是否真的會導致相機轉譯的效果相同。
- (GMSFeatureLayer<GMSPlaceFeature *> *) featureLayerOfFeatureType: | (GMSFeatureType) | featureType |
傳回指定類型的地圖項目圖層。
您必須在 Cloud 控制台中設定特徵層。
如果這張地圖中沒有指定類型的圖層,或是未啟用資料導向樣式,或未使用 Metal 算繪架構,產生的圖層的 `isAvailable` 將會是 NO
,且不會回應任何呼叫。
需要使用金屬轉譯器。如要瞭解如何啟用 Metal,請前往 https://developers.google.com/maps/documentation/ios-sdk/config#use-metal。
- (GMSDatasetFeatureLayer *) datasetFeatureLayerOfDatasetID: | (NSString *) | datasetID |
傳回指定資料集的資料集地圖項目圖層。
您必須在 Cloud 控制台中設定資料集 ID。
如果這個地圖上沒有指定 ID 的資料集,或是未啟用資料導向樣式,產生的圖層的 `isAvailable` 將會是 NO
,且不會回應任何呼叫。
- (void) animateToCameraPosition: | (GMSCameraPosition *) | cameraPosition |
將這個地圖的相機動畫設為 cameraPosition
。
- (void) animateToLocation: | (CLLocationCoordinate2D) | 位置資訊 |
做為 animateToCameraPosition:,但只變更相機位置 (即從目前位置變更為 location
)。
- (void) animateToZoom: | (浮點值) | 縮放 |
做為 animateToCameraPosition:,但只會變更相機的縮放等級。
這個值會受 [kGMSMinZoomLevel, kGMSMaxZoomLevel] 限制。
- (避免) animateToBearing: | (CLLocationDirection) | 熊 |
作為 animateToCameraPosition:,但只會變更相機航向 (以度為單位)。
0 代表正北。
- (void) animateToViewingAngle: | (雙精度浮點數) | viewingAngle |
做為 animateToCameraPosition:,但只會變更相機的視角 (以度為單位)。
這個值會取向地面的最小零 (即直線朝下) 以及距離地平線 30 到 45 度之間的下限 (視距離地球的相對接近程度而定)。
- (void) animateWithCameraUpdate: | (GMSCameraUpdate *) | cameraUpdate |
將 cameraUpdate
套用至目前的相機,然後使用每個 animateToCameraPosition: 得到的結果。
好友及相關功能說明文件
- (NSString* const) kGMSAccessibilityCompass [related] |
指南針按鈕的無障礙 ID。
- (NSString* const) kGMSAccessibilityMyLocation [related] |
「我的位置」的無障礙 ID按鈕。
- (NSString* const) kGMSAccessibilityOutOfQuota [related] |
「配額不足」的無障礙 ID錯誤標籤。
屬性說明文件
- (IBOutlet id<GMSMapViewDelegate>) 委派 [read, write, assign] |
GMSMapView委任。
- (GMSCameraPosition*) camera [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 的地圖樣式。
- (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。
如果設為 NO,系統可能會清除室內資料的快取,並重設使用者目前選取的任何樓層。
- (GMSIndoorDisplay*) indoorDisplay [read, assign] |
取得GMSIndoorDisplay執行個體,該例項可觀察或控制室內資料顯示畫面的各方面。
- (GMSUISettings*) 設定 [read, assign] |
取得GMSUISettings物件,該物件控制地圖的使用者介面設定。
- (UIEdgeInsets) 邊框間距 [read, write, assign] |
控制「顯示」也就是檢視區域
透過在檢視畫面邊緣套用邊框間距即可建立,其中將包含地圖資料,但不會包含 UI 控制項。
如果未平衡邊框間距,檢視畫面的視覺中心會隨之移動。邊框間距也會影響 projection
屬性,因此可見區域不包含邊框間距區域。GMSCameraUpdate FitToBounds 會確保這次的邊框間距和任何要求的邊框間距都會納入考量。
這個屬性可在 UIView 式動畫區塊內建立動畫。
- (GMSMapViewPaddingAdjustmentBehavior) paddingAdjustmentBehavior [read, write, assign] |
控管在邊框間距值中加入安全區域插邊的方式。
就像邊框間距、安全區域插邊位置地圖控制項,例如指南針、「我的位置」按鈕和裝置安全區域內的樓層挑選器。
預設為 kGMSMapViewPaddingAdjustBehaviorAlways。
- (BOOL) accessibilityElementsHidden [read, write, assign] |
預設值為 YES。
如果設為 NO,GMSMapView 將會產生疊加層物件的無障礙元素,例如 GMSMarker 和 GMSPolyline。
這個屬性遵循非正式的 UI 無障礙通訊協定,但預設值為 YES。
- (GMSMapLayer*) 圖層 [read, retain] |
用於圖層的自訂 CALayer 類型的存取子。
- (GMSFrameRate) preferredFrameRate [read, write, assign] |
控管轉譯影格速率。
預設值為 kGMSFrameRate 好好。
- (GMSCoordinateBounds*) cameraTargetBounds [read, write, assign] |
如果非 nil,則會限制攝影機目標,讓手勢無法離開指定邊界。
- (GMSMapCapabilityFlags) mapCapabilities [read, assign] |
目前可使用的所有特定條件提供功能 (取決於 mapID 或其他地圖設定)。
但不含一律可用的功能。