控件和手势

请选择平台: Android iOS JavaScript

利用 Maps SDK for iOS,您可以确定将哪些内置界面组件显示在地图上以及允许哪些手势,从而对用户与地图进行互动的方式进行自定义。

地图控件

Maps SDK for iOS 提供一些内置界面控件,这些控件与 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;
}