web-dev-qa-db-ja.com

Androidアプリの現在の場所のアドレスを取得します

地図を表示する必要はありません。ただし、gps/3gネットワークを使用して現在の位置を特定する必要があります(長短ではなく)ADDRESSは自動SMS応答に追加され、現在返信できないことをユーザーに通知します。私の現在の場所。私はSMSのことを動かしていますが、GPSにアクセスしてアドレスを取得する方法を理解する必要があります。 lat/longのサンプルコードを見てきました。おそらく、Google Maps API内で緯度/経度を住所に変換する必要がありますか?私はそれについてどうやって行くのか分かりません。アドバイス/コードスニペット/同様のチュートリアルを歓迎します!ありがとう。 :)

18
GrumP

これには2つのステップがあります。

  1. GPS、ネットワーク、最新の既知の場所などを使用して、現在の場所-緯度と経度を取得します。Android location documentation にはサンプルコードが含まれています。

  2. Android Geocoder class を使用して、緯度/経度を住所(都市、国、通りなどを簡単に抽出できる)に変換するためのルックアップを要求します。具体的には、getFromLocation()メソッドを使用する必要があります

注意:

  • GetFromLocation()メソッドは、一致のセットを返します。いくつかのシナリオでは、ユーザーにセットを示し(たとえば5)、ユーザーに最適なセットを選択させるか、または最初のセットを使用することができます。
  • これらの呼び出しはどちらも時間がかかる場合があることに注意してください。 GPS /ネットワークが位置を提供するのに時間がかかる場合があります。同様に、getFromLocation()の呼び出しは、ネットワークを介してGoogle Maps APIに到達するため、時間がかかる場合があります。したがって、さまざまなシナリオで広範なエラー処理を使用すること、およびこれらの両方の呼び出しを別のスレッドに移動して、アプリのユーザーインターフェイスをロックしないようにすることが重要です(AsyncTaskを調べます)。
  • Geocoderクラスのバックエンドは、Google承認のデバイスにのみ存在します。そのため、GMail/Market/Mapsが搭載されていないデバイスでは、検索は基本的に失敗します。
25
Ollie C

答えはここにあります: http://developer.Android.com/reference/Android/location/Geocoder.html

Geocoderオブジェクトを作成してgetFromLocation(double latitude, double longitude, int maxResults)を呼び出す必要があります

Geocoder gCoder = new Geocoder(myContext);
ArrayList<Address> addresses = gCoder.getFromLocation(123456789, 123456789, 1);
if (addresses != null && addresses.size() > 0) {
    Toast.makeText(myContext, "country: " + addresses.get(0).getCountryName(), Toast.LENGTH_LONG).show();
}
14
WarrenFaith

場所のアドレスを取得することで知っているように、google GeoCoder を使用できます

それに加えて、緯度と経度を提供することによって位置アドレスを取得するために、このAPIを使用できます。これは信頼性が高く、Google Geocoderよりも高速です。ここでリンクと小さな例を添付します...

API URL-

https://maps.googleapis.com/maps/api/geocode/json?latlng=

uRLの等号の隣に緯度と経度の値を連結できます。

例-

緯度= 6.123456

lng = 79.123456

文字列のURL =

" https://maps.googleapis.com/maps/api/geocode/json?latlng=lat+ "、 "+ lng";

これはreturnすてきなjsonObjectとなり、それで遊ぶことができます。これを試してください。現在、私の位置情報サービスにこのAPIを使用していますが、通常のgoogle geoCoder APIよりも高速です.json応答をキャッチするには、volleyまたはハッピーコーディング。

0
Ashana.Jackol