您可以使用 Maps SDK for iOS,指定要在地圖上顯示的內建 UI 元件及允許的手勢,自訂使用者與地圖的互動方式。
地圖控制項
Maps SDK for iOS 提供一些內建 UI 控制項,與 iOS 版 Google 地圖應用程式類似。您可以使用 GMSUISettings
類別切換這些控制項的顯示設定。就這一類的變化會立即反映在地圖上。
指南針
Maps SDK for iOS 提供指南針圖形,在某些情況下會顯示在地圖右上角。只有在攝影機朝向非零航向時,指南針才會顯示。使用者按一下指南針後,攝影機會移動回航向為零的位置 (預設方向),指南針隨後也會消失。
指南針預設為停用。如要啟用指南針,請將 GMSUISettings
的 compassButton
屬性設為 YES
。但無法強制指南針保持顯示。
Swift
let camera = GMSCameraPosition(latitude: 37.757815, longitude: -122.50764, zoom: 12) let mapView = GMSMapView(frame: .zero, camera: camera) mapView.settings.compassButton = true
Objective-C
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:37.757815 longitude:-122.50764 zoom:12]; GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; mapView.settings.compassButton = YES;
我的位置按鈕
只有在啟用「我的位置」按鈕時,畫面右下角才會顯示「我的位置」按鈕。使用者按一下該按鈕後,攝影機就會以動畫方式呈現使用者的目前位置 (如果目前已知使用者的位置)。將 GMSUISettings
的 myLocationButton
屬性設為 YES
即可啟用按鈕。
Swift
mapView.settings.myLocationButton = true
Objective-C
mapView.settings.myLocationButton = YES;
樓層選擇器
每當以醒目方式呈現室內地圖時,畫面右下方就會顯示樓層挑選器控制項。系統顯示兩張以上的室內地圖時,樓層挑選器與距離畫面中央最近的建築物有關。每個建築物都有首次顯示挑選器時可選取的預設樓層。您可以從挑選器中選取其他樓層。
如要停用樓層挑選器控制項,您可以將 GMSUISettings
的 indoorPicker
屬性設為 NO
。
Swift
mapView.settings.indoorPicker = false
Objective-C
mapView.settings.indoorPicker = NO;
地圖手勢
您可以設定 GMSUISettings
類別的屬性做為 GMSMapView
的屬性,停用地圖上的預設手勢。下面的手勢可以啟用和禁用編程。請注意,停用手勢並不會限製程式輔助存取相機設定。
scrollGestures
:控管是否啟用或停用捲動手勢。如果啟用,用戶可刷卡平移相機。zoomGestures
:控管是否要啟用或停用縮放手勢。如果啟用,使用者可透過輕觸兩下、雙指輕觸或雙指撥動縮放相機。請注意,在啟用scrollGestures
的情況下,輕觸兩下或雙指撥動可能會將相機平移到指定點。tiltGestures
:控管是否啟用或停用傾斜手勢。如果啟用,使用者可以利用雙指垂直向下或向上滑動來傾斜相機。rotateGestures
:控管是否啟用或停用旋轉手勢。如果啟用,使用者可能會使用雙指旋轉手勢來旋轉相機。
在以下範例中,平移和縮放手勢都已停用。
Swift
override func loadView() { let camera = GMSCameraPosition.camera( withLatitude: 1.285, longitude: 103.848, zoom: 12 ) let mapView = GMSMapView.map(withFrame: .zero, camera: camera) mapView.settings.scrollGestures = false mapView.settings.zoomGestures = false self.view = mapView }
Objective-C
- (void)loadView { GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:1.285 longitude:103.848 zoom:12]; GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; mapView.settings.scrollGestures = NO; mapView.settings.zoomGestures = NO; self.view = mapView; }