Я пытаюсь преобразовать текущие данные широты / долготы GeoCode в область администрирования и субадминистрацию с помощью класса Geocoder.
Я использую NETWORK_PROVIDER в качестве поставщика местоположения. Вот код, который я использую, и он работает. Проблема в том, что иногда это не дает мне места, иногда это так.
Разрешения для манифеста Android, которые я использую.
<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 *. 1015 *
Вот что я получил от отладки.
Широта Долгота всегда выбирается, но getFromLocation часто возвращает ноль для данных широты и долготы, переданных ей. Так какой же должен быть обходной путь? Может быть передать информацию о широте / длине в Google Maps API для обратного геокодирования. Будем рады получить любой вклад.