0

我有一个带有多个注释的 MKMapview。当用户选择注释时,“标注”视图会显示位置的名称以及位置与用户位置之间的距离。

我被困在距离上。在 iOS 5 之前,我可以使用 Google 方向 API 来获取距离,但现在我不能。有没有替代的解决方案?

谢谢!

编辑:

我指的距离是两个位置之间的路线距离。该路线有许多路线。这不是“distanceFromLocation:”结果的直线距离

4

2 回答 2

4

如果您有两个 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];
}
于 2012-11-27T17:05:12.030 回答
2

现在(iOS 7 和更高版本)您可以使用 MKDirections、MKDirectionsRequest 和 MKDirectionsResponse 获取路由。

路线信息是 MKRoute(有一个距离属性)。

例如,请点击此链接

于 2015-02-27T03:21:15.127 回答