1

2 つの座標間の距離を測定しようとしています。次のように、harsine 関数を実装しました。

package Services;

public class Route {

private double latitude1;
private double longitude1; 
private double latitude2;
private double longitude2; 


public Route(double latitude1, double longitude1, double latitude2, double longitude2) {

    this.latitude1 = latitude1;
    this.longitude1 = longitude1;
    this.latitude2 = latitude2;
    this.longitude2 = longitude2;
}

public double measureDistance() {

     double earthRadius = 3958.75;
     double dLat = Math.toRadians(latitude2-latitude1);
     double dLng = Math.toRadians(longitude2-longitude1);
     double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
                   Math.cos(Math.toRadians(latitude1)) * Math.cos(Math.toRadians(latitude2)) *
                   Math.sin(dLng/2) * Math.sin(dLng/2);

     double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
     double dist = earthRadius * c;

    return dist; 
}
}

コードは正常に動作し、何かを出力しています。しかし、harsine 式を使用しているため、コードは道路ではなくスカイラインの距離を測定するだけです。Google マップのように距離を測定する方法はありますか? Google Maps API を使用しないと、Google は 1 日か何かで 2500 回の API 呼び出しを行った後に突然現金を受け取ります..

4

3 に答える 3

2

Google Maps API の料金は、基本的に Web マップのみに影響します: http://code.google.com/apis/maps/faq.html#usage_apis

Google Maps for Android API は引き続き無料です。

OTOH、Android 用 Google マップにはルーティングまたはナビゲーション機能がないため、この API を使用してルート距離を計算する方法はありません。

また、これは便利かもしれません:地理的距離

于 2012-02-19T13:57:41.347 に答える
1

Bing MapsAndroidSDKを試してみてください。明示的な使用割り当てはありません。

于 2012-02-19T13:41:04.660 に答える
0

Bing Maps には使用クォータがありますが、これはモバイル アプリには適用されません。Bing Maps は一見の価値があります。Android で Bing Maps を使用するには、次の 2 つの方法があります。1 つ目は、Bing Maps Android SDK を使用する方法です: http://bingmapsandroidsdk.codeplex.com/ 2 つ目は、PhoneGap で Bing Maps V7 AJAX コントロールを使用する方法です。

于 2012-03-02T16:22:31.890 に答える