Гео-автозаполнение для определенной страны

#javascript #api #google-maps #google-maps-api-3 #geolocation

#javascript #API #google-карты #google-maps-api-3 #геолокация

Вопрос:

Я хотел бы иметь поле ввода на моем веб-сайте с автозаполнением для мест в определенной стране. Например, в приведенном ниже коде я хочу получить только места в пределах страны «Нидерланды» в качестве предложений при автозаполнении.

В приведенном ниже коде я получаю предложения для мест во всех странах, не указанных для определенной страны.

 <!DOCTYPE html>
<html>

  <head>
<title>Google Maps JavaScript API v3 Example: Places Autocomplete</title>
<script src="http://maps.googleapis.com/maps/api/js?sensor=falseamp;libraries=places"
  type="text/javascript"></script>

<style type="text/css">
  body {
    font-family: sans-serif;
    font-size: 14px;
  }
  #map_canvas {
    height: 400px;
    width: 600px;
    margin-top: 0.6em;
  }
</style>

<script type="text/javascript">
  function initialize() {

    var input = document.getElementById('searchTextField');
    var autocomplete = new google.maps.places.Autocomplete(input, {country: 'NL'});

    autocomplete.bindTo('bounds', map);

    var infowindow = new google.maps.InfoWindow();
    var marker = new google.maps.Marker({
      map: map
    });

    google.maps.event.addListener(autocomplete, 'place_changed', function() {
      infowindow.close();
      var place = autocomplete.getPlace();
      if (place.geometry.viewport) {
        map.fitBounds(place.geometry.viewport);
      } else {
        map.setCenter(place.geometry.location);
        map.setZoom(17);  // Why 17? Because it looks good.
      }

    });

    setupClickListener('changetype-all', []);

  }
  google.maps.event.addDomListener(window, 'load', initialize);
</script>

</head>
<body>
<div>
  <input id="searchTextField" type="text" size="50">
  <label for="changetype-all"></label>
</div>
</body>
</html>
  

Ответ №1:

Вы можете установить смещение (которое у вас уже есть), но, насколько мне известно, без фактической проверки каждого результата автозаполнения дополнительным кодом вы не можете ограничить список автозаполнения определенной страной или областью.

Вот еще немного информации об автозаполнении Google: http://code.google.com/apis/maps/documentation/places/autocomplete.html#place_autocomplete_requests

Ах, если вы хотите использовать плагин гео-автозаполнения, тогда взгляните на этот пример:

view-source:http://geo-autocomplete.googlecode.com/svn/trunk/demo/ui.demo.html

Это из их примера:

 $('#demo3_location').geo_autocomplete({
    geocoder_region: 'Africa',
    geocoder_types: 'country',
    mapheight: 100, mapwidth: 200, maptype: 'hybrid'
});
  

Комментарии:

1. По этой ссылке: code.google.com/p/geo-autocomplete в нем говорится: geocoder_region ==> Фильтровать предлагаемые местоположения по определенному региону, например, «Европа», вот почему я подумал, что это должно быть возможно.. Я также пробовал это с geocoder_region

2. для гео-автозаполнения требуется дополнительный плагин. Я удовлетворил свой ответ их демонстрацией, в которой используется geocoder_region, чтобы предоставить вам более абсолютный фильтр.

3. Этот пример не работает (как в FF, так и в IE) Я также пробовал ваш код с id: «searchTextField», но тоже не работает..

4. Я нашел рабочий пример: honestbleeps.com/demos /…

Ответ №2:

Не нужно ничего менять — вам просто нужно создать параметр глобальной переменной вместо того, чтобы {country: 'NL'} помещать options туда. Теперь объявите параметр перед использованием.

 options = {types: ['(cities)'],componentRestrictions: { country: 'US' }};
  

Теперь ваша строка будет:

 var autocomplete = new google.maps.places.Autocomplete(input, options);
  

Надеюсь, у вас получится — !
Спасибо,
Кави (Индия)