Предложения на основе неизвестного адреса в геокодере Google - PullRequest
1 голос
/ 09 апреля 2010

При использовании сервиса геокодера Googles для отображения города на карте; заполнение несуществующего города приводит к ошибке.

Есть ли способ отобразить некоторые предложения, основанные на заполненном городе?

var geocoder = new GClientGeocoder();
function showAddress(address, zoom) {

          geocoder.getLatLng(
           address,
           function(point) {
            if (!point) {
                  //no point found....
              //Suggest some points :)
            } else {
                map.setCenter(point, zoom);

            }
          }
         );
        }
showAddress('Someplace, Nederland', 14);

Ответы [ 3 ]

1 голос
/ 20 апреля 2011

Предложения возвращаются в атрибуте меток результатов. Я использую v3, и это работает, попробуйте позвонить по адресу address = "Washington Blvd"

if (geocoder) {
                geocoder.getLocations(
                address,
                function (results) {
                    if (!results) {
                        alert(address + " no suggestions");
                    } else {
                        $('#output').html('');
                        if (results.Placemark) {
                            for (var i = 0; i < results.Placemark.length; i++) {
                                $('#output').append(i + ': ' + results.Placemark[i].address + '<br/>');
                            }
                        }
                    }
                });
            }
0 голосов
/ 09 апреля 2010

Если вы просто геокодируете города, вы можете подумать о том, чтобы начать создавать собственный кэш с координатами городов.

Это один подход, который вы можете рассмотреть:

  • Предложите пользователю ввести название города.
  • Сначала отправьте AJAX-запрос на ваш сервер, чтобы проверить, присутствует ли это название города в вашем кэше.
  • Если это так, продолжайте свою логику JavaScript, как если бы вы получили координаты из геокодера Google.
  • Если название города отсутствовало в вашем кэше, отправьте запрос в геокодер Google, как вы это делаете в настоящее время.
  • Если Google Geocoder возвращает положительный результат, отправьте еще один AJAX-запрос на ваш сервер, чтобы сохранить этот город и его координаты в вашем кэше. Вы больше никогда не спросите Google о координатах этого города. Затем продолжите работу в вашем приложении JavaScript.
  • Если геокодер Google возвращает «Неизвестный адрес», сообщите пользователю, что это название города не найдено, и предложите повторить попытку, используя более распространенное название города. Запомните оригинальное название города, которое было предпринято. Протестируйте вторую попытку с помощью геокодера Google и, если это удастся, сохраните в кеше оба синонима названия города (первая попытка и вторая, если она еще не выполнена)

При таком подходе вы также можете заполнять свой кэш таким образом, чтобы разрешать названия городов, о которых вы уже знаете, что Google не может геокодировать.

0 голосов
/ 09 апреля 2010

Если он найдет совпадение, он вернет совпадения в качестве адресов, и это предложения. Он не должен возвращать ошибку, он должен просто возвращать пустой список, если он не находит совпадений. Вы можете разместить код?

...