在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