緯度と経度の値を使用してAndroidでLocationオブジェクトを作成する


138

場所の緯度と経度の値をデータベースに保存するプログラムがあります。これをダウンロードします。

これらの座標と現在の位置の間の距離を取得したい。

Locationクラスには2つのLocationオブジェクト間の距離を検索する単純なメソッドがあるため、座標を使用してLocationオブジェクトを作成し、そのメソッドを呼び出すと考えました。

これを行う簡単な方法はありますか?また、物事を混乱させない、信頼できるかなり単純な方程式があれば、それも機能します。ありがとう。

(android.location.Location)


詳細については、stackoverflow.com / questions / 8049612 /…をご覧ください
ポールトンプソン

回答:


309

現在の場所を含む場所オブジェクトがすでにあると仮定します。

Location targetLocation = new Location("");//provider name is unnecessary
targetLocation.setLatitude(0.0d);//your coords of course
targetLocation.setLongitude(0.0d);

float distanceInMeters =  targetLocation.distanceTo(myLocation);

1
この回答のコメントとしての+1は、簡潔で単純ですが、実際には非常に役に立ちました。ありがとう@Exception Al
Subby 2014

2
Androidのドキュメンテーションの本当に悪い例で、これにかなりの時間を無駄にしました。私のもう1つの質問は、gpsなどの有効なプロバイダーを提供するとします。現在の場所がわかりますか?言い換えると、プロバイダーの重要性は何
ですか

Locationオブジェクトのデフォルト値が必要で、緯度/経度でそれを初期化できないため、静的初期化子でそれらを設定することをお勧めします。例:static { location.setLatitude(0.0d); location.setLongitude(0.0d); }
Jason Hartley

ええ、私は 'd'の書き込みを逃していたので、ロケーションオブジェクトを作成できませんでした。愚かな小さな間違い
ズルカルナインシャー17/10/18

1
ユニットテストでは、LocationオブジェクトにLatとLonを設定しても効果がないのはなぜですか。場所オブジェクトがなんとなくnullです!?!?
Ewoks

30

コンストラクタを使用て場所を作成し、緯度と経度の値を設定できます。

final Location location = new Location("yourprovidername");
location.setLatitude(1.2345d);
location.setLongitude(1.2345d);

1
@dstとは"yourprovidername"
ban-geoengineering

@ ban-geoengineering空のままにする ""は不要です。
Alp Altunel

13

私のような多くの人が"providername"実際には何であるかを知らないので、私はこれにもう一度答えています。以下のコードは質問に答えます:

Location location = new Location(LocationManager.GPS_PROVIDER);
location.setLatitude(23.5678);
location.setLongitude(34.456);

ここではLocationManager.GPS_PROVIDER、プロバイダー名として使用しています。


なぜLocationManager.GPS_PROVIDER、代替案はありますか?
ban-geoengineering

1
あと2つあります。PASSIVEとNETWORK_PROVIDERです。なぜ、そして何を使うべきかについての素晴らしい説明があります。stackoverflow.com/questions/6775257/...
ビジェイE

1
場合はlocation、オブジェクトを手動で作成されている、しかし、ではなく、空の文字列を使用する方が適切ではないLocationManager.GPS_PROVIDERLocationManager.PASSIVEまたはLocationManager.NETWORK_PROVIDER
ban-geoengineering
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.