我得到了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
})
}它以某种随机的方式工作。它在视图加载时执行,然后当我将地图滚动到另一个国家或城市并缩放时,它可以(有时,现在总是)将我返回到当前位置。这很奇怪,因为我的当前位置没有改变,委托也不应该执行。我需要做的,不知何故,这件事没有发生。所以我想让我的地图缩放到当前位置时,只有当位置发生变化,否则我需要有免费的滚动地图。
发布于 2015-03-02 23:29:17
您必须将控制器设置为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!)。
请注意,您必须重新启用它,以防您需要使用您的坐标更新地图中心,而不是手动滚动到您的实际位置。
https://stackoverflow.com/questions/28812922
复制相似问题