Android getFromLocationName возвращает результаты за пределами рамки

Я делаю поиск местоположения из моего приложения для Android. Пользователь вводит адрес, и я просматриваю следующий код,

private void doSearch(String query){ FNMApplication.logInfo("Searching:"+query); //create a geocoder Geocoder gc = new Geocoder(this,Locale.getDefault()); try{ //lookup locations which match the query input by the user List<Address> addresses = gc.getFromLocationName(query, 5, -44.00, 111.00, -12.0, 155.0); //if there are any results save them in an ivar for re-use locationSearchResults=addresses; promptSearch(); } catch (Exception e){ ; } } 

Ограничивающая рамка выше для австралии, но если я ищу «Лос-Анджелос», она вернет результаты в США. Есть что-то, что я пропустил? Как я вижу, он должен возвращать только адреса в ограничительной рамке в соответствии с справочным документом

Из вопроса я попробовал это, и результаты, которые я получил, показаны ниже.

 18.55, 72.54 = Mumbai 22.18, 70.56 = Rajkot 

1)

Когда я пропускаю нижнюю широту vaue, как левый ниже, и ищу строку, я получил это

 Geocoder gc = new Geocoder(this, Locale.getDefault()); try { List<Address> addresses = gc.getFromLocationName("akshardham", 5, 18.55, 72.54, 22.18, 70.56); Log.i("Address", "=========0----------------------" + addresses.get(0).getAddressLine(0) + addresses.get(0).getAddressLine(1)); Log.i("Address", "=========0----------------------" + addresses.get(1).getAddressLine(0) + addresses.get(1).getAddressLine(1)); Log.i("Address", "=========0----------------------" + addresses.get(2).getAddressLine(0)); Log.i("Address", "=========0----------------------" + addresses.get(3).getAddressLine(0)); Log.i("Address", "=========0----------------------" + addresses.get(4).getAddressLine(0)); } catch (Exception e) { ; } 

Logcat этого

 11-17 12:42:32.419: INFO/Address(802): =========0----------------------AkshardhamNH 8C, Sector 20 11-17 12:42:32.429: INFO/Address(802): =========0----------------------AkshardhamRajkot, Gujarat 360005 11-17 12:42:32.429: INFO/Address(802): =========0----------------------Akshardham 

2)

Когда я передаю более высокую широту vaue, как показано ниже, и поиск строки, я получил это

 List<Address> addresses = gc.getFromLocationName("akshardham",5, 22.18, 70.56,18.55, 72.54 ); 

Logcat этого

 11-17 12:43:53.170: INFO/Address(837): =========0----------------------HardhamPulborough, West Sussex RH20 1 

3)

Документ сам говорит: «Адресам, соответствующим внутри ограничивающей рамки, присваивается более высокий ранг». , Я думаю, что они хотят сказать, что не нужно, что если поисковая строка является адресом между этим полем, то будет только возврат, если они найдут адрес, который они вернут, даже если его из ограничивающей рамки. Предположим, что Bounding Box предназначен только для установки приоритета результата, в то время как получение результата результата из окна wil будет первым, а затем другим, как в get (0), получить (1) списка. Но результат будет дан, даже если они не находятся в ограничивающей рамке.

4)

В Geocoder.java здесь они просто вызывают метод для получения адресов с передачей двойных значений в качестве аргумента simple..no никакой проверки для результата используется там еще, чтобы проверить самое низкое и самое высокое значение

=> Итак, окончательный ответ на вашу проблему вы просто вызываете функцию по мере того, как вы звоните, и вы можете проверить вторую адресную строку, которая соответствует их словам, означает, что состояние или страна одинаковы. Чтобы найти страну, имя штата вашего значения рамки использования getFromLocation (широта, долгота, maxResults), я до сих пор не нашел идеального решения. Для этого так мне тоже.

=> Больше об этом можно объяснить экспертом (это я не) или разработчиком от самой Google.