Swift3 在swift 3中,我以英里为单位计算的距离似乎是错误的

Swift3 在swift 3中,我以英里为单位计算的距离似乎是错误的,swift3,xcode8.2,Swift3,Xcode8.2,我有用户的当前位置和特定位置。我试图以英里为单位计算距离。我的英里数似乎不对,我在我的应用程序上得到了1.2英里,然后我在谷歌地图上查看了英里数。我在谷歌地图上找到了2.1英里。这是我的代码,我不知道为什么我的代码不准确。请帮忙 var locationManager = CLLocationManager() override func viewDidLoad() { super.viewDidLoad() map.delegate = self map.userT

我有用户的当前位置和特定位置。我试图以英里为单位计算距离。我的英里数似乎不对,我在我的应用程序上得到了1.2英里,然后我在谷歌地图上查看了英里数。我在谷歌地图上找到了2.1英里。这是我的代码,我不知道为什么我的代码不准确。请帮忙

var locationManager = CLLocationManager()

override func viewDidLoad() {
    super.viewDidLoad()

    map.delegate = self
    map.userTrackingMode = MKUserTrackingMode.follow

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

    // set location
    let latitude: CLLocationDegrees = 32.5850
    let longitude: CLLocationDegrees = -85.4904
    let latDelta: CLLocationDegrees = 0.05
    let lonDelta: CLLocationDegrees = 0.05
    let span: MKCoordinateSpan = MKCoordinateSpan(latitudeDelta: latDelta, longitudeDelta: lonDelta)
    let coordinates = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
    let region = MKCoordinateRegion(center: coordinates, span: span)

    map.setRegion(region, animated: true)

    // add annotation 
    let annotation = MKPointAnnotation()
    annotation.title = "1100 S College St"
    annotation.coordinate = coordinates

    map.addAnnotation(annotation)

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

    let userLocation: CLLocation = locations[0]
    let latitude = userLocation.coordinate.latitude
    let longitude = userLocation.coordinate.longitude

    let location1 = CLLocation(latitude: 32.5850, longitude: -85.4904) // set location

    let location2 = CLLocation(latitude: latitude, longitude: longitude) // user's current location

    let distanceInMeters : CLLocationDistance = location1.distance(from: location2) // distance in meters

    let distanceInMiles = distanceInMeters/1609.344  // distance in miles

    let roundUp = String(format:"%.1f", distanceInMiles) // round up

    distanceLabel.text = "\(roundUp) mi"

}
这一部分是正确的:

let distanceInMiles = distanceInMeters/1609.344  // distance in miles
以米为单位检查距离,并与谷歌地图进行比较。 如果您使用的是iOS 10,您可以使用新的测量和相关类,如下所示:

let meters = 1000.0

let distanceMeters = Measurement(value: meters, unit: UnitLength.meters)

let distanceMiles = distanceMeters.converted(to: UnitLength.miles)
let miles = distanceMeters.converted(to: UnitLength.miles).value
此代码生成以下结果: 此部分是正确的:

let distanceInMiles = distanceInMeters/1609.344  // distance in miles
以米为单位检查距离,并与谷歌地图进行比较。 如果您使用的是iOS 10,您可以使用新的测量和相关类,如下所示:

let meters = 1000.0

let distanceMeters = Measurement(value: meters, unit: UnitLength.meters)

let distanceMiles = distanceMeters.converted(to: UnitLength.miles)
let miles = distanceMeters.converted(to: UnitLength.miles).value
此代码生成以下结果: Swift 4,XCode9

extension CLLocation {

    func myDistance(coordinate: CLLocation)->String{

        let distanceInMeters = self.distance(from: coordinate)

        if distanceInMeters < 1000 {
            return distanceInMeters.description + " M"
        }else{
            let distanceInKilometer = distanceInMeters /  1000
            return String(format:"%.1f", distanceInKilometer) + " KM"
        }

    }

}
Swift 4,XCode9

extension CLLocation {

    func myDistance(coordinate: CLLocation)->String{

        let distanceInMeters = self.distance(from: coordinate)

        if distanceInMeters < 1000 {
            return distanceInMeters.description + " M"
        }else{
            let distanceInKilometer = distanceInMeters /  1000
            return String(format:"%.1f", distanceInKilometer) + " KM"
        }

    }

}

嗨,我刚刚检查了我的米和公里距离,并与谷歌地图进行了比较。我有不同的号码。我不确定在获取距离编号时哪里出错了?在iOS和谷歌地图上使用位置1和位置2的精确坐标检查距离。我刚刚检查了位置1和位置2的坐标。我认为谷歌地图上显示的坐标不太准确。因为当我复制精确的坐标并应用到我的应用程序时。我的应用程序跑了2.1英里。和我在谷歌地图上看到的号码一样。但是,location1、location1图标和location2用户的位置在我的应用程序上显示不正确。有什么好方法可以检查我的坐标是否正确吗?嗨,我刚刚检查了我的距离(米和公里),并与谷歌地图进行了比较。我有不同的号码。我不确定在获取距离编号时哪里出错了?在iOS和谷歌地图上使用位置1和位置2的精确坐标检查距离。我刚刚检查了位置1和位置2的坐标。我认为谷歌地图上显示的坐标不太准确。因为当我复制精确的坐标并应用到我的应用程序时。我的应用程序跑了2.1英里。和我在谷歌地图上看到的号码一样。但是,location1、location1图标和location2用户的位置在我的应用程序上显示不正确。有没有什么好办法检查我的坐标是否正确?