利用 Maps SDK for iOS,您可以确定将哪些内置界面组件显示在地图上以及允许哪些手势,从而对用户与地图进行互动的方式进行自定义。
地图控件
Maps SDK for iOS 提供了一些内置界面控件,这些控件与 Google 地图 iOS 应用中提供的控件类似。您可以使用 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; }