動的に利用可能な緯度と経度の座標を人間が読める場所に変換する Android アプリをプログラミングしています。
たとえば、12.2, 4.5 は英国ロンドン中心部にあります。粒度に関しては、少なくとも都市 - >町を見つけることができるようにしたいと考えています。または、そうでない場合は、少なくとも都市、
誰かがこの問題に対して利用できる解決策についてアドバイスしてもらえますか?
動的に利用可能な緯度と経度の座標を人間が読める場所に変換する Android アプリをプログラミングしています。
たとえば、12.2, 4.5 は英国ロンドン中心部にあります。粒度に関しては、少なくとも都市 - >町を見つけることができるようにしたいと考えています。または、そうでない場合は、少なくとも都市、
誰かがこの問題に対して利用できる解決策についてアドバイスしてもらえますか?
これを試して:
//listenner location changed
private class MyLocListener implements LocationListener {
public void onLocationChanged(Location location) {
if (location != null) {
Log.d("LOCATION CHANGED", location.getLatitude() + "");
Log.d("LOCATION CHANGED", location.getLongitude() + "");
}
}
}
//Get address base on location
try{
Geocoder geo = new Geocoder(youractivityclassname.this.getApplicationContext(), Locale.getDefault());
List<Address> addresses = geo.getFromLocation(latitude, longitude, 1);
if (addresses.isEmpty()) {
yourtextfieldname.setText("Waiting for Location");
}
else {
if (addresses.size() > 0) {
Log.d(TAG,addresses.get(0).getFeatureName() + ",
" + addresses.get(0).getLocality() +",
" + addresses.get(0).getAdminArea() + ",
" + addresses.get(0).getCountryName());
}
}
}
catch (Exception e) {
e.printStackTrace();
}
ポイントの位置 (緯度、経度) を読み取り可能な住所または地名に変換するプロセスは、リバース ジオコーディングと呼ばれます。【ウィキペディアより】
GeoCoderクラスを利用し、メソッドgetFromLocationを使用する必要があります。このメソッドは、リストから各Addressオブジェクトを List<Address>
反復することによってアクセスできる を返します。
例: