Iphone 如何计算两点之间的行驶距离?

Iphone 如何计算两点之间的行驶距离?,iphone,objective-c,core-location,Iphone,Objective C,Core Location,我想创建一个可以计算点A到点B之间行驶距离的应用程序。我知道CLLocation有distanceFromLocation:来计算两点之间的距离,但它只计算点A到点B之间的直线。它有办法计算两点之间的行驶距离吗积分?怎样有样品吗 谢谢我认为iOS中没有任何功能,distance from location将给出两个坐标之间的空中距离 但是,您可以使用计算道路距离。我认为iOS中没有任何功能,distance from location将给出两个坐标之间的空中距离 但是您可以使用Swift 3计算

我想创建一个可以计算点A到点B之间行驶距离的应用程序。我知道
CLLocation
distanceFromLocation:
来计算两点之间的距离,但它只计算点A到点B之间的直线。它有办法计算两点之间的行驶距离吗积分?怎样有样品吗


谢谢

我认为iOS中没有任何功能,
distance from location
将给出两个坐标之间的空中距离


但是,您可以使用计算道路距离。

我认为iOS中没有任何功能,
distance from location
将给出两个坐标之间的空中距离

但是您可以使用Swift 3计算道路距离。

func routingDistance(userNotation: CLLocation, destinationLocation: CLLocation, completion: @escaping (CLLocationDistance) -> Void) {
    let request:MKDirectionsRequest = MKDirectionsRequest()

    // source and destination are the relevant MKMapItems
    let sourceS = CLLocationCoordinate2D(latitude: userNotation.coordinate.latitude, longitude: userNotation.coordinate.longitude)
    let destinationD = CLLocationCoordinate2D(latitude: destinationLocation.coordinate.latitude, longitude: destinationLocation.coordinate.longitude)
    let sourcePM = MKPlacemark(coordinate: sourceS)
    let destinationPM = MKPlacemark(coordinate: destinationD)
    request.source = MKMapItem(placemark: sourcePM)
    request.destination = MKMapItem(placemark: destinationPM)

    // Specify the transportation type
    request.transportType = MKDirectionsTransportType.automobile;

    // If you're open to getting more than one route,
    // requestsAlternateRoutes = true; else requestsAlternateRoutes = false;
    request.requestsAlternateRoutes = true

    let directions = MKDirections(request: request)

    directions.calculate { (response, error) in
        if let response = response, let route = response.routes.first {
            completion(route.distance)
        }
    }
}
Swift 3:

func routingDistance(userNotation: CLLocation, destinationLocation: CLLocation, completion: @escaping (CLLocationDistance) -> Void) {
    let request:MKDirectionsRequest = MKDirectionsRequest()

    // source and destination are the relevant MKMapItems
    let sourceS = CLLocationCoordinate2D(latitude: userNotation.coordinate.latitude, longitude: userNotation.coordinate.longitude)
    let destinationD = CLLocationCoordinate2D(latitude: destinationLocation.coordinate.latitude, longitude: destinationLocation.coordinate.longitude)
    let sourcePM = MKPlacemark(coordinate: sourceS)
    let destinationPM = MKPlacemark(coordinate: destinationD)
    request.source = MKMapItem(placemark: sourcePM)
    request.destination = MKMapItem(placemark: destinationPM)

    // Specify the transportation type
    request.transportType = MKDirectionsTransportType.automobile;

    // If you're open to getting more than one route,
    // requestsAlternateRoutes = true; else requestsAlternateRoutes = false;
    request.requestsAlternateRoutes = true

    let directions = MKDirections(request: request)

    directions.calculate { (response, error) in
        if let response = response, let route = response.routes.first {
            completion(route.distance)
        }
    }
}

因为NDA不能讨论它,但请看iOS7 MapKit的更改。因为NDA不能讨论它,但请看iOS7 MapKit的更改。不幸的是,您必须为此api付费(如果您的使用情况良好),不幸的是,您必须为此api付费(如果您的使用情况良好)