控制項和手勢

選取平台: Android iOS JavaScript

您可以使用 Maps SDK for iOS,指定要在地圖上顯示的內建 UI 元件及允許的手勢,自訂使用者與地圖的互動方式。

地圖控制項

Maps SDK for iOS 提供一些內建的 UI 控制項,與 Google 地圖 iOS 應用程式中的控制項類似。您可以使用 GMSUISettings 類別切換這些控制項的顯示設定。就這一類的變化會立即反映在地圖上。

指南針

在某些情況下,Maps SDK for iOS 會提供指南針圖形 (顯示在地圖右上角)。只有在攝影機朝向非零航向時,指南針才會顯示。使用者按一下指南針後,攝影機會移動回航向為零的位置 (預設方向),指南針隨後也會消失。

指南針預設為停用。您可以將 GMSUISettingscompassButton 屬性設為 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;
      

我的位置按鈕

只有在啟用「我的位置」按鈕時,畫面右下角才會顯示「我的位置」按鈕。使用者按一下該按鈕後,如果目前已知使用者的所在位置,攝影機會以動畫效果聚焦於使用者的目前位置。如要啟用按鈕,請將 GMSUISettingsmyLocationButton 屬性設為 YES

Swift

mapView.settings.myLocationButton = true
      

Objective-C

mapView.settings.myLocationButton = YES;
      

樓層挑選器

只要室內地圖醒目顯示,螢幕右下方就會顯示樓層挑選器控制項。當系統顯示兩張以上的室內地圖時,樓層挑選器會與距離螢幕中央最近的建築物相關聯。每個建築物都有預設樓層,系統會在首次顯示挑選器時選取這個樓層,您可以從挑選器中選取其他樓層。

如要停用樓層挑選器控制項,請將 GMSUISettingsindoorPicker 屬性設為 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;
}