控制項和手勢

選取平台: Android iOS JavaScript

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

地圖控制項

Maps SDK for iOS 提供部分內建 UI 控制項,與 iOS 版 Google 地圖應用程式中的控制項類似。您可以使用 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;
}