2011-08-03 73 views
15

我有什麼:目前我的應用只告訴我我當前位置的座標。從取座標獲取位置名稱

我想要什麼:從GPS獲取的座標獲取位置名稱,以便我可以知道我到底在哪裏。 (位置名稱)

+1

你在找這個「中給出-一個緯度和經度,得到最位置的名稱] [1 ]」 [1]:http://stackoverflow.com/questions/6172451/given-a-latitude-and-longitude-get-the-location-name – Samuel

+0

看一看[如何編程谷歌Android](http://blogoscoped.com/archive/2008-12-15-n14.html) –

+1

你的問題是相同的問題,我發佈了幾個月back..check此鏈接http:///stackoverflow.com/questions/6172451/given-a-latitude-and-longitude-get-the-location-name或檢查我的答案下面... – Krishna

回答

27

這裏是獲取長期完整的代碼 - 緯度,以獲得地址:

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

使用此權限:<使用權限android:name =「android.permission.ACCESS_COARSE_LOCATION」/> <使用權限android:name =「android.permission.ACCESS_FINE_LOCATION」/> –

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