根据以下文档distanceInMeters
:
这种方法通过追踪它们之间的一条遵循地球曲率的线来测量两个位置之间的距离。生成的弧线是一条平滑曲线,没有考虑两个位置之间的特定高度变化。
所以该方法实际上返回了一条“直线”。
据我所知,您需要MKRoute
在自定义路线的每个部分之间创建单独的对象,计算这些单独的距离,然后将它们组合起来。
正如我在这个答案中解释的那样,您可以通过获取类似内容来计算每个单独的 MKRoute 的距离MKDirectionsResponse
:
let request:MKDirectionsRequest = MKDirectionsRequest()
// source and destination are the relevant MKMapItems
request.setSource(source)
request.setDestination(destination)
// 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.calculateDirectionsWithCompletionHandler ({
(response: MKDirectionsResponse?, error: NSError?) in
if error == nil {
self.directionsResponse = response
}
})
然后像这样得到距离:
let route = directionsResponse.routes[currentRoute] as MKRoute
let distance = route.distance