GMSMapView 類別參考資料


總覽

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

地圖應透過其中一個建構函式 -init 或 -initWithOptions: 執行個體化。

GMSMapView只能從主執行緒讀取及修改,類似於所有 UIKit 物件。從其他執行緒呼叫這些方法將導致例外狀況或未定義的行為。

公開成員函式

(執行個體類型)- init
 使用 CGRectZero 和預設選項初始化。
(執行個體類型)- initWithOptions:
 以指定的選項建立新的地圖檢視。
(執行個體類型)- initWithFrame:
(執行個體類型)- initWithCoder:
(執行個體類型)- initWithFrame:camera:
 建構並傳回含有影格和攝影機目標的地圖檢視。
(執行個體類型)- 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) - animateToCameraPosition:
 將此地圖的相機加入 cameraPosition 動畫。
(void) - animateToLocation:
 作為 animateToCameraPosition,,但只變更相機的位置 (例如,從目前位置變更為 location)。
(void) - animateToZoom:
 如同 animateToCameraPosition:,但只會變更相機的縮放等級。
(void) - animateToBearing:
 如同 animateToCameraPosition:,但只會變更相機的方位 (以度為單位)。
(void) - animateToSeeAngle:
 如同 animateToCameraPosition:,但只會變更相機的視角 (以度為單位)。
(void) - animateWithCameraUpdate:
 cameraUpdate 套用至目前的相機,然後按照 animateToCameraPosition: 使用結果。

靜態公開成員函式

(執行個體類型)+ mapWithFrame:camera:
 建構並傳回含有影格和攝影機目標的地圖檢視。
(執行個體類型)+ mapWithFrame:mapID:camera:
 便利的初始化器,可建構並傳回包含影格、地圖 ID 和相機目標的地圖檢視。

資源

IBOutlet id<GMSMapViewDelegate >委派
 GMSMapView代表。
GMSCameraPosition相機
 控制攝影機,以定義地圖的方向。
GMSProjection投影
 傳回一個GMSProjection對象,可用於在螢幕座標和經緯度座標之間進行轉換。
BOOLmyLocationEnabled
 控管是否啟用「我的位置」點和精確度圓圈。
CLLocation * myLocation
 如果已啟用「我的位置」,會顯示裝置位置圓點的繪製位置。
GMSMarkerselectedMarker
 選取的標記。
BOOLtrafficEnabled
 控制地圖是否正在繪製車流量資料 (如果有的話)。
GMSMapViewTypemapType
 控制應顯示的地圖圖塊類型。
GMSMapStylemapStyle
 控制地圖的樣式。
float minZoom
 最小變焦 (最遠的相機可能會縮小)。
float maxZoom
 最大縮放 (最接近地球的攝影機)。
BOOLbuildingsEnabled
 設定後,系統會在適用情況下顯示 3D 建築物。
BOOLindoorEnabled
 設定是否顯示室內地圖 (如有)。
GMSIndoorDisplayindoorDisplay
 取得GMSIndoorDisplay實例,可觀察或控制室內資料顯示幕。
GMSUISettings設定
 取得GMSUISettings物件,其可控制地圖的使用者介面設定。
UIEdgeInsets邊框間距
 控制檢視的「可見」區域。
GMSMapViewPaddingAdjustmentBehaviorpaddingAdjustmentBehavior
 控管將安全區域插邊新增至邊框間距值的方式。
BOOLaccessibilityElementsHidden
 預設值為 YES。
GMSMapLayer圖層
 圖層所用自訂 CALayer 類型的存取子。
GMSFrameRatepreferredFrameRate
 控管轉譯影格速率。
GMSCoordinateBoundscameraTargetBounds
 如果不是 nil,請限制攝影機目標,避免手勢讓手勢離開指定邊界。
GMSMapCapabilityFlagsmapCapabilities
 目前當下可用的所有可用功能 (視地圖 ID 或其他地圖設定而定)。

(請注意,這些並非成員函式)。

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

成員函式說明文件

- (instancetype) init

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

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

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

此方法會複製選項物件的值。

- (instancetype) initWithFrame: (CGRect) 影格
- (instancetype) initWithCoder: (NSCoder *) 編碼器
+ (例項類型) mapWithFrame: (CGRect) 影格
相機: (GMSCameraPosition *) 攝影機

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

+ (例項類型) 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) 插邊

建立一個GMSCameraPosition,與 padding 一起呈現 bounds

攝影機的航向和傾斜角度會為零,也就是面向北方,並且直視地球。這會採計此設計的影格和邊框間距GMSMapView入考量。

如果邊界無效,這個方法會傳回 nil 相機。

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

根據 update 變更攝影機。

相機變更會立即生效 (沒有動畫)。

- (BOOL) isEqualForRenderingPosition: (GMSCameraPosition *) 位置
排名: (GMSCameraPosition *) otherPosition

將內部使用的精確度和轉換程度納入考量,檢查特定鏡頭位置實際上是否會導致相機算繪結果相同。

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

您必須在 Cloud 控制台中設定特徵層。

如果這張地圖上沒有指定的圖層,或者資料導向樣式未啟用,或未使用 Metal 算繪架構,則產生的圖層為 NO,且不會回應任何呼叫。

需要金屬轉譯器。如要瞭解如何啟用 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:,但只會變更相機的方位 (以度為單位)。

0 表示正北。

- (void) animateToSeeAngle: (雙精度浮點數) 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*) 相機 [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 時,才會套用非 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]

控制檢視的「可見」區域。

只要在檢視畫面邊緣加上邊框間距,即可建立包含地圖資料,但不會包含 UI 控制項。

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

這個屬性可在以 UIView 為基礎的動畫區塊內以動畫呈現。

控管將安全區域插邊新增至邊框間距值的方式。

如同邊框間距,安全區域插邊會放置地圖控制項,例如指南針、「我的位置」按鈕和裝置安全區域內的樓層選擇器。

預設值為 kGMSMapViewPaddingAdjustmentBehaviorAlways。

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

預設值為 YES。

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

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

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

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

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

控管轉譯影格速率。

預設值為 kGMSFrameRateHeight。

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

如果不是 nil,請限制攝影機目標,避免手勢讓手勢離開指定邊界。

目前當下可用的所有可用功能 (視地圖 ID 或其他地圖設定而定)。

但不包括一律可用的功能。