0

複数の注釈を持つ MKMapview があります。ユーザーが注釈を選択すると、「コールアウト」ビューに場所の名前と、その場所とユーザーの場所の間の距離が表示されます。

距離を取るのに困っています。iOS 5 より前は、Google 方向 API を使用して距離を取得できましたが、現在はできません。代替ソリューションはありますか?

ありがとうございました!

編集:

私が参照する距離は、2 つの場所の間のルートの距離です。ルートには多くのルートがあります。「distanceFromLocation:」の結果としての直線の距離ではありません。

4

2 に答える 2

4

2 つの CLLocations がある場合、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 に答える