如何获得准确的用户坐标并停止位置管理器

时间:2015-03-18 22:43:44

标签: swift ios7 ios8 mkmapview core-location

我想获取当前设备位置和缩放地图到该坐标 我也不想在缩放到用户位置后停止位置管理器,以防止用户移动时更改地图可见区域。

...viewDidLoad...{
self.locationManager = CLLocationManager();
        self.locationManager.delegate = self;
        self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
        self.mapView.showsUserLocation = true;
        self.locationManager.startUpdatingLocation();
}

func locationManager(manager:CLLocationManager, didUpdateLocations locations:[AnyObject]){
var newRegion = MKCoordinateRegion(center: self.mapView.userLocation.coordinate, span: MKCoordinateSpanMake(0.014, 0.014));
            self.mapView.setRegion(newRegion, animated: true);
            self.locationManager.stopUpdatingLocation();
}

此代码的问题在于此代码将地图视图移动到海洋,坐标有时无效(另一个大陆) 当我停止位置管理器地图视图停留在海洋中时: - /
制作我想要的东西的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

CLLocationManager并不总是保证单个委托调用的准确坐标(例如第一个委托调用时)。 newRegion可能只会为您提供缓存位置。

有关CLLocation的更多信息,请参阅以下答案:

How to stop multiple times method calling of didUpdateLocations() in ios

CLLocationManager holds cache value

Function "didUpdateToLocation" being called without changes