我正在嘗試使用Geocoder類將GeoCode當前的緯度/長度數據反轉爲管理區和子管理區。 我正在使用NETWORK_PROVIDER作爲位置提供程序。這裏是我使用的代碼,它的工作原理。問題有時它並不會給我任何位置。Android應用程序中的反向地理編碼
我正在使用Android Manifest權限。
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET"/>
下面是剩餘的代碼,不時給我正確的位置,但在其他時間沒有。
double latPoint = 0;
double lngPoint = 0;
List<Address> myList = null;
getApplicationContext();
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Location recentLoc = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (recentLoc != null){
latPoint = recentLoc.getLatitude();
lngPoint = recentLoc.getLongitude();
Geocoder myLocation = new Geocoder(getApplicationContext(), Locale.getDefault());
if (myLocation != null){
try {
myList = myLocation.getFromLocation(latPoint, lngPoint, 1);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if (myList.size()> 0){
String AdminArea = myList.get(0).getAdminArea();
String SubAdminArea = myList.get(0).getSubAdminArea();
String Zipcode = myList.get(0).getPostalCode();
String urlocation = SubAdminArea + ", " + AdminArea + " " + Zipcode;
Context context1 = getApplicationContext();
int duration1 = Toast.LENGTH_LONG;
CharSequence text1 = urlocation;
Toast toast1 = Toast.makeText(context1, text1, duration1);
toast1.show();
}
}
網絡提供商是否有限制您可以請求位置數據的頻率?
我該如何確保每次運行時都能給出有效的位置數據。
非常感謝您對此的深入瞭解。
PS:我在運行Froyo 2.2(Verizon Wireless)的真實設備上運行此代碼。目標API級別8.
這是我從調試中得到的。
緯度經度總是被提取,但getFromLocation經常爲傳遞給它的緯度經度數據返回null。那麼該如何解決?可能會將經緯度/長信息傳遞給Google Maps API進行反向地理編碼。很高興收到任何意見。