高德地图开发iOS 地图SDK与地图交互—手势交互

高德地图开发iOS 地图SDK与地图交互—手势交互

手势交互 最后更新时间: 2021年03月24日

高德地图iOS SDK提供了丰富的手势操作以满足开发者对地图交互的需求,用户需要修改MAMapView的相关属性进行设置:

手势总览

名称

说明

MAMapView.zoomEnabled

此属性用于地图缩放手势的开启和关闭

MAMapView.scrollEnabled

此属性用于地图滑动手势的开启和关闭

MAMapView.rotateEnabled

此属性用于地图旋转手势的开启和关闭

MAMapView.rotateCameraEnabled

此属性用于地图仰角手势的开启和关闭

缩放手势

缩放手势可改变地图的缩放级别,地图响应的手势如下:

  • 双击地图可以使缩放级别增加1 (放大)
  • 两个手指捏/拉伸

通过 MAMapView 的 zoomEnabled 属性可以禁用或启用缩放手势。禁用缩放手势不会影响用户使用地图上的缩放控制按钮。禁用缩放手势的代码如下:

Objective-C
Swift

_mapView.zoomEnabled = NO;    //NO表示禁用缩放手势,YES表示开启
mapView.isZoomEnabled = false

地图缩放功能拓展:

地图的缩放级别的范围是[3-19],调用 MAMapView的setZoomLevel 方法设置地图的缩放级别,用来缩放地图。示例代码如下:

Objective-C
Swift

[_mapView setZoomLevel:17.5 animated:YES];
mapView.setZoomLevel(17.5, animated: true)

滑动手势

您可以用手指拖动地图四处滚动(平移)或用手指滑动地图(动画效果)。

通过 MAMapView 的 scrollEnabled 属性可以禁用或开启平移(滑动)手势。以下介绍展示如何禁用缩放手势,示例代码如下:

Objective-C
Swift

 _mapView.scrollEnabled = NO;    //NO表示禁用滑动手势,YES表示开启
mapView.isScrollEnabled = false

地图滑动功能拓展:

地图平移时,缩放级别不变,可通过改变地图的中心点来移动地图,示例代码如下:

Objective-C
Swift

[_mapView setCenterCoordinate:center animated:YES];
mapView.setCenter(center, animated: true)

旋转手势

您可以用两个手指在地图上转动,可以旋转3D矢量地图。

通过调用类MAMapView的rotateEnabled属性禁用或开启旋转手势。

Objective-C
Swift

_mapView.rotateEnabled= NO;    //NO表示禁用旋转手势,YES表示开启
mapView.isRotateEnabled = false

地图旋转功能拓展:

旋转角度的范围是[0.f 360.f],以逆时针为正向。调用 MAMapView 的 setRotationDegree 方法设置地图的旋转角度。示例代码如下:

Objective-C
Swift

[_mapView setRotationDegree:60.f animated:YES duration:0.5];
mapView.setRotationDegree(60, animated: true, duration: 0.5)

倾斜手势

用户可以在地图上放置两个手指,移动它们一起向下或向上去增加或减小倾斜角。

通过MAMapView的rotateCameraEnabled属性禁用或启用倾斜手势。

Objective-C
Swift

_mapView.rotateCameraEnabled= NO;    //NO表示禁用倾斜手势,YES表示开启
mapView.isRotateCameraEnabled = false

地图倾斜功能拓展:

倾斜角度范围为[0.f, 45.f],调用MAMapView的setCameraDegree方法设置地图的倾斜角度。示例代码如下:

Objective-C
Swift

[_mapView setCameraDegree:30.f animated:YES duration:0.5]; 
mapView.setCameraDegree(30, animated: true, duration: 0.5)

指定屏幕中心点的手势操作

在对地图进行手势操作时(滑动手势除外),可以指定屏幕中心点后执行相应手势。指定屏幕中心点的方法如下:

Objective-C
Swift

MAMapStatus *status = [self.mapView getMapStatus];
status.screenAnchor = CGPointMake(0.5, 0.76);//地图左上为(0,0)点,右下为(1,1)点。
[self.mapView setMapStatus:status animated:NO];
mapView.screenAnchor = CGPoint(x: 0.5, y: 0.8)