有没有办法允许只将MKMapView缩放到特定区域,同时禁用任何其他用户交互?

时间:2016-10-16 18:45:12

标签: ios swift mkmapview mapkit mkmapviewdelegate

我有一个带有MapView的swift应用。这些是我在地图故事板上的设置:

enter image description here

此外,在代码I中:

let regionRadius: CLLocationDistance = 10000
let initialLocation = CLLocation(latitude: latitude, longitude: longitude)
centerMapOnLocation(initialLocation, map: cell.mapView, radius: regionRadius)
cell.mapView.scrollEnabled = false
cell.mapView.rotateEnabled = false

我的方法centerMapOnLocation最初将地图置于特定位置的中心位置:

func centerMapOnLocation(location: CLLocation, map: MKMapView, radius: CLLocationDistance) {
    let coordinateRegion = MKCoordinateRegionMakeWithDistance(location.coordinate,
                                                              radius * 2.0, radius * 2.0)
    map.setRegion(coordinateRegion, animated: true)
}

我想只允许用户放大/缩小到精确的gps坐标。

目前用户无法滚动地图,但他也可以旋转地图 - 他可以在地图上的任何地方双击,它会在那里缩放。

我想禁用这些选项并产生效果,当用户双击地图(或捏合)时 - 它只会缩放到初始位置。

我该怎么做?还有 - 为什么rotateEnabled = false不起作用?

1 个答案:

答案 0 :(得分:3)

在双击操作方法

中添加以下代码
var annotationPoint = MKMapPointForCoordinate(zoomToLocation.coordinate)
var zoomRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0.1, 0.1)
mapView.setVisibleMapRect(zoomRect, animated: true)

这里zoomToLocation是你想要的CLLocation,mapView是MKMapView的对象。

希望这能解决你的问题:)