2

これは初心者の質問かもしれませんが、100% 確信があるわけではありません。

Geo ポイントを使用して位置オブジェクトを作成するにはどうすればよいですか? 2点間の距離を取得するために使用したい。私はすでにそれが言うスレッドを見つけました

Location loc1 = new Location("Location"); 
loc.setLatitude(geoPoint.getLatitudeE6);
loc.setLongitude(geoPoint.getLongitudeE6);

Location loc2 = new Location("Location2");
loc2.setLatitude(geoPoint.getLatitudeE6);
loc2.setLongitude(geoPoint.getLongitudeE6);

そして、distanceTo() を使用して 2 点間の距離を取得します。

私の質問 Providername は何のためのものですか? ...new Location("これは何ですか???") 事前にプロバイダーを定義する必要がありますか? このコードを for() で使用して、より多くのジオポイント間で計算したいと考えています。ところで、E6値を通常に戻す必要がありますか?

4

3 に答える 3

2

ではない正確に

loc.setLatitude() は倍の緯度を取ります。したがって、正しいコードは次のとおりです。

  loc.setLatitude( geoPoint.getLatitudeE6() / 1E6);

Location() コンストラクターは、使用される GPS プロバイダーの名前を取得します。LocationManager.GPS_PROVIDER または NETWORK_PROVIDER などの値を指定できます

于 2011-05-18T06:39:49.380 に答える
1
Log.i("MapView", "Map distance to mark (in meters): " + myLocation.distanceTo(GeoToLocation(point)) + "m");

それから

public Location GeoToLocation(GeoPoint gp) {
        Location location = new Location("dummyProvider");
        location.setLatitude(gp.getLatitudeE6()/1E6);
        location.setLongitude(gp.getLongitudeE6()/1E6);
        return location;
    }
于 2012-07-10T05:44:50.810 に答える
1

2 点間の距離を取得するには、 Locationクラスを使用できます。より正確には、distanceBetween静的メソッドを使用できます。

ドキュメントはそれが何をするかについて非常に明確ですが、ここに簡単なコードサンプルがあります:

float[] results = new float[3];
Location.distanceBetween(destLatitude, destLongitude, mCurrentLocation.getLatitude(), mCurrentLocation.getLongitude(), results);
// result in meters, convert it in km
String distance = String.valueOf(Math.round(results[0] / 1000)) + " km");

分/秒から度に変換するには、Location クラスのconvertメソッドを使用できます。

于 2011-05-18T07:27:53.063 に答える