0

このスニペットを使用して、ユーザーの現在の最適な位置を取得しています。

    LocationManager ltrLocationer = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    Criteria criteria = new Criteria();
    criteria.setAccuracy(Criteria.ACCURACY_FINE);
    Location locLocation = ltrLocationer.getLastKnownLocation(ltrLocationer.getBestProvider(criteria, true));

Doubleそれぞれ緯度と経度を含む2つのオブジェクトがあります。現在の座標と前述の値との間の距離をメートル単位で確認したいと思います。これどうやってするの?

これは非常に簡単に実行できるように聞こえましたが、これを説明する例を見つけることができませんでした。ありがとう。

4

3 に答える 3

2

Locationオブジェクトにはdistanceメソッドがあります。それを使用して、それはあなたのために数学を行います。座標が二重である場合は、静的関数Location.distanceBetweenを使用します

于 2013-03-27T13:07:04.277 に答える
1

ここを見てください:メーターへのGPS座標 また、計算を行うために使用される方程式についてのウィキペディアの記事があります:Haversine式

于 2013-03-27T12:44:22.513 に答える
0

この方法を確認してください。これにより、が得られますdistance in a straight line

public static double distFrom(double lat1, double lng1, double lat2, double lng2) {
double earthRadius = 3958.75;
double dLat = Math.toRadians(lat2-lat1);
double dLng = Math.toRadians(lng2-lng1);
double sindLat = Math.sin(dLat / 2);
double sindLng = Math.sin(dLng / 2);
double a = Math.pow(sindLat, 2) + Math.pow(sindLng, 2)
        * Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2));
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
double dist = earthRadius * c;

return dist;
}

この操作が必要な場合road distanceは、もう少し難しく、Google Direction APIサービスへの呼び出しが必要になります。

于 2013-03-27T12:41:53.533 に答える