我有mapView及其委托方法
func mapView(mapView: MKMapView!, didUpdateUserLocation userLocation: MKUserLocation!) {
mapView.userTrackingMode = MKUserTrackingMode.None
var eye = CLLocationCoordinate2DMake(userLocation.coordinate.latitude, userLocation.coordinate.longitude)
var cam = MKMapCamera(lookingAtCenterCoordinate: eye, fromEyeCoordinate: eye, eyeAltitude: 10000)
UIView.animateWithDuration(1, animations: { () -> Void in
mapView.camera = cam
})
}
它以随机的方式工作。它在视图加载时执行,而当我将地图滚动到另一个国家或城市并进行缩放时,它可以(有时,现在总是)将我返回到当前位置。这很奇怪,因为我当前的位置没有变化,代表不应该执行。 我需要以某种方式做这件事不要发生。所以我想让我的地图只有在位置改变时才能缩放到当前位置,换句话说我需要有免费的滚动地图。
答案 0 :(得分:0)
您必须将控制器设置为CLLocationManagerDelegate
,然后声明一个变量,如:
var locationManager:CLLocationManager = CLLocationManager()
然后在你的viewDidLoad方法中:
override func viewDidLoad() {
super.viewDidLoad()
self.locationManager.delegate = self
self.locationManager.stopUpdatingLocation()
应阻止致电func mapView(mapView: MKMapView!, didUpdateUserLocation userLocation: MKUserLocation!)
。
注意您必须重新装入它,以防您需要使用坐标更新地图中心而无需手动滚动到实际位置。