我假设你正在使用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