Я пытаюсь преобразовать текущие данные Lat/Long GeoCode в область Admin Area и Sub Admin Area, используя класс Geocoder. Я использую NETWORK_PROVIDER в качестве поставщика местоположения. Вот код, который я использую, и он работает. Проблема в том, что иногда это иногда не дает мне места.Обратное геокодирование в приложении для Android
Разрешения манифеста для 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.
Это то, что я получил от своей отладки.
Локатор долготы всегда выбирается, но функция getFromLocation часто возвращает значение null для переданных на него данных долготы широты. Итак, каково должно быть обходное решение? Может быть передана информация Lat/Long в API Карт Google для обратного геокодирования. Будем рады получить любой вход.