在MKMapView中以米为单位测量绘制的路线的距离

我怎样才能计算MKMapView中两个坐标之间的路线距离? 我不是要求直线距离,而是要求转弯路线的距离。

我假设你正在使用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 (以米为单位)可以find使用:

 MKRoute *route = self.directionsResponse.routes[currentRoute]; CLLocationDistance distance = route.distance; 

如果你不知道你想要使用哪一条路线 – 例如。 如果您想根据距离决定路线,您可以通过一个循环来遍历directionsResponse.route数组,以获得所有的路线距离。

编辑:此外,如果你想find时间的距离(以秒为单位),你可以这样做:

 NSTimeInterval seconds = route.expectedTravelTime; 

而在Swift中:

 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 

iOS 7已经引入了基于方向的API,称为MKDirections API,这有助于使用基于根的方向数据,通过它可以在应用程序中播放。参考下面的链接获取更多关于MKDirection API的文档

MKDirection API