如何计算MKMapView中两个坐标之间的路线距离?我不是要求直线距离,而是要求转弯路线的距离。
答案 0 :(得分:12)
我假设您正在使用MKDirectionsRequest
获取MKDirectionsResponse
,您可以从中获取路线。例如:
MKDirectionsRequest *request = [[MKDirectionsRequest alloc] init];
// source and destination are the relevant MKMapItem's
request.source = source;
request.destination = destination;
// Specify the transportation type
request.transportType = MKDirectionsTransportTypeAutomobile;
// If you're open to getting more than one route, requestsAlternateRoutes = YES; else requestsAlternateRoutes = NO;
request.requestsAlternateRoutes = YES;
MKDirections *directions = [[MKDirections alloc] initWithRequest:request];
[directions calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse *response, NSError *error) {
if (!error) {
self.directionsResponse = response;
}
}];
获得MKDirectionsResponse
(在本例中为self.directionsResponse
)并根据该响应确定特定路线索引后,可以找到该路线的CLLocationDistance
(以米为单位)使用:
MKRoute *route = self.directionsResponse.routes[currentRoute];
CLLocationDistance distance = route.distance;
如果你不知道你想要使用哪条特定路线 - 例如如果你想根据距离决定一条路线 - 你可以通过一个循环来遍历directionsResponse.route
数组,以获得所有的路线距离。
编辑:此外,如果您想要找到时间距离(以秒为单位),您可以使用:
NSTimeInterval seconds = route.expectedTravelTime;
在斯威夫特:
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
获得预计的旅行时间:
let seconds = route.expectedTravelTime
答案 1 :(得分:0)
iOS 7引入了基于方向的API,称为MKDirections API,这有助于您可以在应用程序中使用基于根的方向数据。有关MKDirection API的更多文档,请参阅以下链接