Я схожу с ума в течение последних двух дней с ошибкой IllegalArgumentException
, которую я получаю в коде Android, когда пытаюсь получить координаты из адреса или даже наоборот, получить адрес из долготы и широты. Это код, но я не вижу ошибки. Это стандартный фрагмент кода, который легко найти в поиске Google.
public GeoPoint determineLatLngFromAddress(Context appContext, String strAddress) {
Geocoder geocoder = new Geocoder(appContext, Locale.getDefault());
GeoPoint g = null;
try {
System.out.println("str addres: " + strAddress);
List<Address> addresses = geocoder.getFromLocationName(strAddress, 5);
if (addresses.size() > 0) {
g = new GeoPoint(
(int) (addresses.get(0).getLatitude() * 1E6),
(int) (addresses.get(0).getLongitude() * 1E6)
);
}
} catch (Exception e) {
throw new IllegalArgumentException("locationName == null");
}
return g;
}
Это разрешения из файла manifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
У меня тоже есть ключ Google API: <uses-library android:name="com.google.android.maps" />
Из приведенного выше фрагмента кода geocoder
не является null
, также как и address
или appContext
, и я спотыкаюсь здесь: geocoder.getFromLocationName(strAddress, 5);
Я много занимался поиском в Google и не нашел ничего, что сработало, и самая важная информация, которую я нашел, это:
Классу Geocoder требуется бэкэнд-сервис, который не включен в базовую платформу Android.
Ооо, я сейчас в замешательстве. Что мне нужно вызывать, импортировать, добавлять, использовать в коде .... чтобы это работало?
Я использую Google API 2.2, уровень API 8.
Если кто-то нашел решение для этого или указатель на документацию, что-то, чего я не обнаружил, сообщите нам.