2011-08-03 3 views
15

私が持っているもの:現在のところ、私のアプリは自分の現在地の座標だけを教えています。フェッチされた座標からロケーション名を取得

私が欲しいもの:座標がgpsによってフェッチされた位置の名前を取得します。その結果、正確な位置を知ることができます。 (所在地)

+1

あなたは「このために探しています[与えられた--緯度経度-GET--場所名]を[1 ]」 [1]:http://stackoverflow.com/questions/6172451/given-a-latitude-and-longitude-get-the-location-name – Samuel

+0

を見てください[プログラムする方法Google Android](http://blogoscoped.com/archive/2008-12-15-n14.html) –

+1

あなたの質問は、私が数か月前に投稿した質問と同じです。このリンクを確認してくださいhttp:///stackoverflow.com/questions/6172451/given-a-latitude-and-longitude-get-the-location-nameまたは下の自分の答えを確認してください... – Krishna

答えて

27

は長いフェッチからの完全なコードです - アドレス取得にLAT:

LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
String provider = locationManager.getBestProvider(new Criteria(), true); 

Location locations = locationManager.getLastKnownLocation(provider); 
List<String> providerList = locationManager.getAllProviders(); 
if(null!=locations && null!=providerList && providerList.size()>0){     
double longitude = locations.getLongitude(); 
double latitude = locations.getLatitude(); 
Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.getDefault());     
try { 
    List<Address> listAddresses = geocoder.getFromLocation(latitude, longitude, 1); 
    if(null!=listAddresses&&listAddresses.size()>0){ 
     String _Location = listAddresses.get(0).getAddressLine(0); 
    } 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

} 
+2

ときどきこの逆ジオコーディング技術私は必要なときに毎回lat-longからアドレスを取得する方法はありますか? –

+1

はい、いつかアドレスを返しません。このためには、アドレスを取得するためにアドレスを取得しなかった場合や、アドレスを取得するためにgoogle apiを使用できる場合など、バックアップメカニズムを実装することができます。 –

+0

この許可を使用する:

8

GeoCoderは、android.locationにあります。 Geocoderパッケージ。 JavaDocsは完全な説明を提供します。あなたのための可能なサンプル。

List<Address> list = geoCoder.getFromLocation(location 
       .getLatitude(), location.getLongitude(), 1); 
     if (list != null & list.size() > 0) { 
      Address address = list.get(0); 
      result = address.getLocality(); 
      return result; 

resultは、場所の名前を返します。

6

ここでは、この関数で緯度と経度を渡しただけで、この緯度と経度に関連するすべての情報が得られます。

public void getAddress(double lat, double lng) { 
    Geocoder geocoder = new Geocoder(HomeActivity.mContext, Locale.getDefault()); 
    try { 
     List<Address> addresses = geocoder.getFromLocation(lat, lng, 1); 
     Address obj = addresses.get(0); 
     String add = obj.getAddressLine(0); 
     GUIStatics.currentAddress = obj.getSubAdminArea() + "," 
       + obj.getAdminArea(); 
     GUIStatics.latitude = obj.getLatitude(); 
     GUIStatics.longitude = obj.getLongitude(); 
     GUIStatics.currentCity= obj.getSubAdminArea(); 
     GUIStatics.currentState= obj.getAdminArea(); 
     add = add + "\n" + obj.getCountryName(); 
     add = add + "\n" + obj.getCountryCode(); 
     add = add + "\n" + obj.getAdminArea(); 
     add = add + "\n" + obj.getPostalCode(); 
     add = add + "\n" + obj.getSubAdminArea(); 
     add = add + "\n" + obj.getLocality(); 
     add = add + "\n" + obj.getSubThoroughfare(); 

     Log.v("IGA", "Address" + add); 
     // Toast.makeText(this, "Address=>" + add, 
     // Toast.LENGTH_SHORT).show(); 

     // TennisAppActivity.showDialog(add); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show(); 
    } 
} 

私はあなたの答えに答えを得ることを望みます。ここで

+0

非常に複雑なもの... – Noman

+0

私は私の場所の正確な場所を得ることができる、それは都市の価値を最大に与える、私は都市内のロケーション名を望む – Apoorv

関連する問題