ошибка в реализации геокодера - PullRequest
0 голосов
/ 29 мая 2011

Я пытаюсь реализовать геокодер в классе следующим образом:

Geocoder geocoder = new Geocoder(context, Locale.ENGLISH);    
List<Address> list = geocoder.getFromLocation(
                        (double)(coord.getLat()), (double)(coord.getLon()), 1);
if (list != null && list.size()>0 ) {
    Address address=list.get(0);
    String result = address.getAddressLine(0) + ", " + address.getLocality();
}

Широта и долгота, которые я передаю getLocationFrom (), являются целыми числами в этой форме:

2365818 48930308 в getFromLocation () Я приведу его к удвоению.

В любом случае мое приложение блокирует эту строку:

 List<Address> list = geocoder.getFromLocation(
     (double)(coord.getLat()), (double)(coord.getLon()), 1);

, выбрасывая следующее:

 java.lang.IllegalArgumentException: latitude == 2365818.0
 at android.location.Geocoder.getFromLocation(Geocoder.java:114)
 at android.location.Geocoder.getFromLocation(Geocoder.java:124)

вcom.Server_1.ClientThread_special.run (ClientThread_special.java:70) в java.lang.Thread.run (Thread.java:1096)

Строка 70 в ClientThread_special означает эту строку:

List<Address> list = geocoder.getFromLocation(lat, lon,1);

1 Ответ

2 голосов
/ 29 мая 2011

getFormLocation не принимает lat ниже -90 или более 90. Long может быть от -180 до 180. Это угловые градусы на земном шаре, и ваши значения слишком высокие.

См. Документы геокодера

Попробуйте разделить значения на 100000, чтобы преобразовать их в правильные двойные значения.

UPDATE:

Я мог ошибаться в отношении суммы, на которую вы должны делиться. Попробуйте 1000000 (1M), а также

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...