地図を表示する必要はありません。ただし、gps / 3gネットワークを使用して現在の位置を特定する必要がありますADDRESS(長くて緯度がない)これは自動化されたSMS応答に追加され、現在返信できないことを人に通知します。私の現在の場所。私はSMSを機能させていますが、GPSにアクセスしてアドレスを取得する方法を理解する必要があります。lat/longのサンプルコードを見てきました。おそらく私は緯度/経度をグーグルマップAPI内のアドレスに変換する必要がありますか?どうすればいいのかわからない。アドバイス/コードスニペット/同様のチュートリアルを歓迎します!ありがとう。:)
3 に答える
これには2つのステップがあります。
GPS、ネットワーク、最後に認識された場所などを使用して、現在の場所(緯度と経度)を取得します。Androidの場所のドキュメントにはサンプルコードが含まれています。
Android Geocoderクラスを使用して、緯度/経度を住所(都市、国、通りなどを簡単に抽出できる)に変換するためのルックアップをリクエストします。具体的には、getFromLocation()メソッドを使用する必要があります
ノート:
- getFromLocation()メソッドは、一致のセットを返します。一部のシナリオでは、ユーザーにセット(たとえば、5)を表示して、ユーザーに最適なものを選択させることができます。または、最初のセットを使用して、それが最適であると想定することもできます。
- これらの呼び出しは両方とも時間がかかる可能性があることに注意してください。GPS/ネットワークが位置情報を提供するのに時間がかかる場合があります。同様に、getFromLocation()の呼び出しは、ネットワークを介してGoogle Maps APIに送られるため、時間がかかる場合があります。したがって、さまざまなシナリオで広範なエラー処理を使用し、アプリのユーザーインターフェイスをロックしないように、これらの呼び出しを両方とも別のスレッドに移動することが重要です(AsyncTaskを調べてください)。
- Geocoderクラスのバックエンドは、Googleが承認したデバイスにのみ存在します。したがって、GMail / Market/Mapsがインストールされていないデバイスでは基本的にルックアップは失敗します。
答えはここにあります:http://developer.android.com/reference/android/location/Geocoder.html
ジオコーダーオブジェクトを作成して呼び出す必要があります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();
}
あなたがロケーションアドレスを取得するために知っているように、あなたはグーグルジオコーダーを使うことができます
それに加えて、緯度と経度を指定して住所を取得するには、このAPIを使用できます。これは、Google Geocoderよりも信頼性が高く、高速です。ここに、リンクと小さな例を添付します...
APIURL-
URLの等号の横にある緯度と経度の値を連結できます。
例 -
lat = 6.123456
lng = 79.123456
文字列のURL=
" https://maps.googleapis.com/maps/api/geocode/json?latlng=lat+ "、 "+ lng";
これは素晴らしいjsonObjectを返し、それで遊ぶことができます。これを試してみてください。現在、位置情報サービスにこのAPIを使用しており、通常のgoogle geoCoder APIよりも高速です。json応答をキャッチするには、ボレーなどを使用できます。ハッピーコーディング。