2011-04-19 74 views
0

我正在開發Android系統的GPS系統。我能夠找到我當前位置的經度和緯度,但是當我嘗試將我的緯度和經度轉換爲物理地址時,我的代碼無法工作。我嘗試了幾種可能性。我在這裏發佈了我的代碼。無法實現反向地理編碼

任何幫助,非常感謝。 謝謝。

try { 

     List<Address> addresses = gc.getFromLocation(latitude, longitude, 1); 
     System.out.println(""+latitude); 
     StringBuilder sb = new StringBuilder(); 
     if (addresses.size() > 0) { 

     Address address = addresses.get(0); 
     for (int i = 0; i < address.getMaxAddressLineIndex(); i++) 
     sb.append(address.getAddressLine(i)).append("\n"); 
     sb.append(address.getLocality()).append("\n"); 
     sb.append(address.getPostalCode()).append("\n"); 
     sb.append(address.getCountryName()); 
     } 
     addressString = sb.toString(); 
     } catch (IOException e) {} 
     } else { 
     latLongString = "No location found"; 
     } 
     myLocationText.setText("Your Current Position is:\n" + 
     latLongString + "\n" + addressString); 
     } 

我的問題是,我不能讓在List<Address> addresses = gc.getFromLocation(latitude, longitude, 1); 任何價值。它僅返回一個空列表。 任何人都可以告訴我問題是什麼以及如何整理出來......

+1

確定您的緯度/經度是正確的值?如果您在確定存在相應地址的情況下提供硬編碼值,會發生什麼情況? – 2011-04-19 13:42:09

+0

@MarvinLabs我也嘗試過硬編碼的值..但仍然列表是空的。 – 2011-04-19 14:00:31

+1

您可能已經知道這一點,但是您是否在清單文件中添加了INTERNET權限。 – chaitanya 2011-04-19 14:39:56

回答

0
Geocoder gc = new Geocoder(ctx, Locale.getDefault()); 
List<Address> addresses; 
addresses = gc.getFromLocation(lat, lng, 1);   
StringBuilder sb = new StringBuilder(); 
if (addresses.size() > 0) 
{ 
    Address address = addresses.get(0); 
    for (int i = 0; i < address.getMaxAddressLineIndex(); i++) 
     sb.append(address.getAddressLine(i)).append(","); 
} 

這會得到一個位置。但有時例外是"Unable to parse the response from server"。您需要處理異常。還要檢查清單中的INTERNET permission

+0

嗨那裏..我已經嘗試過這一點。如果存在,我實際上正在尋求一種不同的方法。 – 2011-04-26 09:58:17

+0

然後你可以打電話給谷歌的web服務,並處理結果 – Vansi 2011-04-26 11:28:48

+0

webservice像這樣.... http://maps.google.com/maps/geo?q=lattitude,longitude&output=csv&sensor=false – Vansi 2011-04-26 11:29:09