我有一个带有多个注释的 MKMapview。当用户选择注释时,“标注”视图会显示位置的名称以及位置与用户位置之间的距离。
我被困在距离上。在 iOS 5 之前,我可以使用 Google 方向 API 来获取距离,但现在我不能。有没有替代的解决方案?
谢谢!
编辑:
我指的距离是两个位置之间的路线距离。该路线有许多路线。这不是“distanceFromLocation:”结果的直线距离
我有一个带有多个注释的 MKMapview。当用户选择注释时,“标注”视图会显示位置的名称以及位置与用户位置之间的距离。
我被困在距离上。在 iOS 5 之前,我可以使用 Google 方向 API 来获取距离,但现在我不能。有没有替代的解决方案?
谢谢!
编辑:
我指的距离是两个位置之间的路线距离。该路线有许多路线。这不是“distanceFromLocation:”结果的直线距离
如果您有两个 CLLocation,则可以使用该distanceFromLocation:
方法获取它们之间的距离(以米为单位)。
例子:
CLLocation* first = [[CLLocation alloc] initWithLatitude:firstLatitude longitude:firstLongitude];
CLLocation* second = [[CLLocation alloc] initWithLatitude:secondLatitude longitude:secondLongitude];
CGFloat distance = [first distanceFromLocation:second];
您可以从注释类上的或类似属性中获取注释(而不是注释视图)的纬度和经度。coordinate
如果您有一个注释列表并且想要获取它们之间的路径距离,只需:
CGFloat distance = 0;
for(int idx = 0; idx < [mapView.annotations count] - 1; ++idx) {
CLLocationCoordinate2D firstCoord = [mapView.annotations[idx] coordinate];
CLLocationCoordinate2D secondCoord = [mapView.annotations[idx + 1] coordinate];
CLLocation* first = [[CLLocation alloc] initWithLatitude:firstCoord.latitude longitude:secondCoord.latitude];
CLLocation* second = [[CLLocation alloc] initWithLatitude:secondCoord.latitude longitude:secondCoord.longitude];
distance += [first distanceFromLocation:second];
}
现在(iOS 7 和更高版本)您可以使用 MKDirections、MKDirectionsRequest 和 MKDirectionsResponse 获取路由。
路线信息是 MKRoute(有一个距离属性)。
例如,请点击此链接。