为什么iOS CLLocation显示不正确的值?

时间:2016-08-07 12:39:24

标签: ios swift coordinates cllocationmanager

我正在尝试计算2个坐标之间的距离。为此我做了:

func setupLocationManager() {
    if CLLocationManager.authorizationStatus() == .NotDetermined {
        locationManager.requestWhenInUseAuthorization()
    }

    locationManager.delegate = self
    locationManager.desiredAccuracy = kCLLocationAccuracyBest
    locationManager.startUpdatingLocation()
}

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    let latitude = locations.last?.coordinate.latitude
    let longitude = locations.last?.coordinate.longitude

    let myLocation = CLLocation(latitude: latitude!, longitude: longitude!)
    let targetLocation = CLLocation(latitude: 41.4381022, longitude: 46.604910)

    let distance = myLocation.distanceFromLocation(targetLocation)
    print(distance)
}

我在Google地图上查看距离有13公里!但我的应用程序显示我2-3公里!

我该如何改进?

2 个答案:

答案 0 :(得分:5)

Google地图为您提供两个地点之间的路线距离,CLLocation为您提供两个地点之间的鸟瞰距离。

来自documentation

  

此方法通过跟踪测量两个位置之间的距离   它们之间的一条线跟随地球的曲率。该   产生的弧线是一条平滑的曲线并没有考虑在内   两个地点之间的特定高度变化。

答案 1 :(得分:0)

以下是基于working GPS app的示例。

stats_type='season'