Геокодер Google возвращает неверную страну, игнорируя подсказку региона - PullRequest
30 голосов
/ 15 апреля 2010

Я использую геокодер Google, чтобы найти координаты широты для данного адреса.

    var geocoder = new google.maps.Geocoder();
    geocoder.geocode(
    {
        'address':  address,
        'region':   'uk'
    }, function(results, status) {
        if(status == google.maps.GeocoderStatus.OK) {
            lat: results[0].geometry.location.lat(),
            lng: results[0].geometry.location.lng()
    });

address переменная берется из поля ввода.

Я хочу искать местоположения только в Великобритании . Я думал, что указание 'region': 'uk' должно быть достаточно, но это не так. Когда я набираю «Бостон», он находит Бостон в США, а я хотел тот, что в Великобритании.

Как ограничить геокодером возврат местоположений только из одной страны или, возможно, из определенного диапазона широт?

Спасибо

Ответы [ 13 ]

0 голосов
/ 20 апреля 2015

Сегодня мне пришлось отфильтровать результаты по стране. Я обнаружил, что двухсимвольный код страны в компоненте Ограничения: страна: не работает. Но полное название страны делает.

Это полное имя в address_components из результата.

0 голосов
/ 24 апреля 2014

Я предпочитаю гибридный подход .

  1. Используйте componentRestrictions, чтобы сначала строго ограничить страну.
  2. Если это не дает достаточного количества результатов, выполните поиск более широко (и, если необходимо, повторите смещение) <pre> function MyGeocoder(address,region) { geocoder = new google.maps.Geocoder(); geocoder.geocode({ 'address': address, 'componentRestrictions': { 'country': region } }, function (r, s) { if (r.length < 10) geocoder.geocode({ 'address': address /* could also bias here */ }, function (r2, s2) { for (var j = 0; j < r2.length; j++) r.push(r2[j]); DoSomethingWithResults(r); }); else DoSomethingWithResults(r); }); }<br> function DoSomethingWithResults(r) { // Remove Duplicates var d = {}; r = r.filter(function (e) { var h = e.formatted_address.valueOf(); var isDup = d[h]; d[h] = true; return !isDup; });</p> <code>// Do something with results }

0 голосов
/ 24 марта 2011

Для Соединенного Королевства вы должны использовать ГБ для региона. Великобритания не является кодом страны ISO!

...