Автозаполнение карт Google и границы - PullRequest
2 голосов
/ 21 декабря 2011

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

Как можноЯ это исправлю?

Вот html и тот же код ниже:

<!DOCTYPE html>
<html>
  <head>
    <title>Google Maps JavaScript API v3 Test: Places Autocomplete</title>
    <script src="http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"
      type="text/javascript"></script>

    <style type="text/css">
      body {
        font-family: sans-serif;
        font-size: 14px;
      }
      #map_canvas {
        height: 1px;
        width: 1px;
        display:hidden;
      }
     #searchTextField{
        width:500px;
    }
    </style>

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

        var options = { 
          bounds: google.maps.LatLngBounds( google.maps.LatLng(33.1613, -118.4766), google.maps.LatLng(14.3770, -84.8145) )     
        };

        var input = document.getElementById('searchTextField');
        var autocomplete = new google.maps.places.Autocomplete(input, options);

        var infowindow = new google.maps.InfoWindow();

        google.maps.event.addListener(autocomplete, 'place_changed', function() {
          infowindow.close();
          var place = autocomplete.getPlace();

        });
      }
      google.maps.event.addDomListener(window, 'load', initialize);
    </script>
  </head>
  <body>
      <input id="searchTextField" type="text" size="50"> <div id="map_canvas"></div>
  </body>
</html>

Ответы [ 4 ]

8 голосов
/ 09 октября 2012

Теперь вы можете выполнить то, что вы хотите:

    componentRestrictions: {country: 'mx'}

в аргументе options для создания объекта Autocomplete.

Это жесткое ограничение, в отличие от bounds. Это только для стран, но это то, что вы хотите в любом случае.

2 голосов
/ 11 октября 2013
    var options = {
        types:  ['geocode'],
        componentRestrictions: {country: "mx"}
    };
1 голос
/ 21 декабря 2011

Установка границ не так, как вы делаете смещение местоположения.См. «Смещение местоположения» в этой документации:

http://code.google.com/apis/maps/documentation/places/autocomplete.html#location_biasing

Вы можете сместить результаты в указанном круге, передав местоположение и параметр радиуса.Это дает указание службе Place предпочитать показывать результаты в этом круге;результаты за пределами заданной области могут по-прежнему отображаться.

Кроме того, посмотрите на этот пример здесь:

http://gmaps -samples-v3.googlecode.com/svn/trunk/places/places-search.html

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

0 голосов
/ 24 декабря 2011

Как указывалось в предыдущем ответе и как сказано в API , вы можете только смещение в отношении набора результатов. Я бы посоветовал установить меньшие границы, основываясь где-то в центре Мексики или даже в Мехико, чтобы усилить предвзятость.

...