MKMapView不会保持旋转状态

时间:2015-05-20 05:41:59

标签: ios iphone swift mkmapview

易于重现: - 创建一个新项目 - 在屏幕上放置一个MKMapView - 尝试用两根手指旋转

它稍微旋转并停止,当你松开手指时,它会回到原来的位置。

如何让它保持旋转状态? 并尽可能多地旋转?

我使用的是最新的iOS(8.something),iPhone 6模拟器和Swift。

4 个答案:

答案 0 :(得分:3)

我弄明白了这个问题。 实际上没有解决方案,发生的事情是如果地图区域太大,MKMapView不允许你保持旋转。 如果放大,则可以正常旋转。

答案 1 :(得分:1)

请试试这个 全球声明:

let regionRadius: CLLocationDistance = 1000

在viewdidload中:

let initialLocation = CLLocation(latitude: 21.282778, longitude: -157.829444)
    centerMapOnLocation(initialLocation)

然后创建一个帮助类:

func centerMapOnLocation(location: CLLocation) {
        let coordinateRegion = MKCoordinateRegionMakeWithDistance(location.coordinate,
            regionRadius * 2.0, regionRadius * 2.0)
        mapview.setRegion(coordinateRegion, animated: true)
    }

答案 2 :(得分:0)

尝试使用MKMapView的rotateEnabled属性:

rotateEnabled - 一个布尔值,指示是否使用地图摄像机的标题信息。

声明

SWIFT var rotateEnabled:Bool

当此属性设置为YES且有效摄像机与地图关联时,摄像机的航向角用于围绕其中心点旋转地图平面。当此属性设置为NO时,将忽略摄像机的航向角,并始终定向地图,以使真北位于地图视图的顶部。

答案 3 :(得分:0)

您必须覆盖CLLocationManager.didUpdateLocations(CLLocationManagerDelegate的一部分)才能在位置管理员检索当前位置时收到通知,并且不在那里执行任何操作:

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
    // Don't do update the map to the new location
}