我们如何将谷歌地图自动填充限制为仅限于特定城市?

时间:2016-11-28 11:22:16

标签: javascript google-maps google-maps-api-3 autocomplete

我的要求是仅为班加罗尔的地方获取谷歌地方自动完成建议,但如果我搜索除了班加罗尔以外的任何其他地方,那么我也得到了我不想要的建议。我找到了很多与我的问题相关的stackoverflow链接,但没有一个能解决我的问题。

这可以获得任何特定城市的建议吗?

我在下面分享我的代码: -

var input = (document.getElementById('address'));
          var s_w = new google.maps.LatLng( 12.97232, 77.59480 ); //southwest
          var n_e = new google.maps.LatLng( 12.89201, 77.58905 ); //northeast
          var b_bounds = new google.maps.LatLngBounds( s_w, n_e ); //bangalorebounds

var options = {
            bounds:b_bounds,
            componentRestrictions: {country: "in"}
           };
var autocomplete = new google.maps.places.Autocomplete(input, options);

autocomplete.bindTo('bounds', map);

autocomplete.addListener('place_changed', function() {

  //rest_of_the_code

});

请有人帮忙!!

4 个答案:

答案 0 :(得分:5)

试试这样。

var bangaloreBounds = new google.maps.LatLngBounds(
   new google.maps.LatLng(12.864162, 77.438610),
   new google.maps.LatLng(13.139807, 77.711895));

var autocomplete = new google.maps.places.Autocomplete(this, {
   bounds: bangaloreBounds,
   strictBounds: true,
});

autocomplete.addListener('place_changed', function () {

});

注意:网址应为:https://maps.googleapis.com/maps/api/js?libraries=places&key=YOUR_API_KEY

地图JavaScript API 3.27版中添加了

strictBounds option,该版本目前(2017年1月)是实验版。

答案 1 :(得分:1)

我认为你可以试试这个:

1ts4,2ts5,3ts6,4ts7

var cityBounds = new google.maps.LatLngBounds( new google.maps.LatLng(25.341233, 68.289986), new google.maps.LatLng(25.450715, 68.428345)); var options = { bounds: cityBounds, types: ['geocode'], componentRestrictions: {country: 'est'} }; 值替换为您的值,将LatLng替换为您的国家/地区代码。

答案 2 :(得分:1)

您可以使用边界来偏向结果,但目前在自动填充的地方没有按城市进行严格过滤。

您可以在公共问题跟踪器中找到要添加更严格过滤器的功能请求:

https://code.google.com/p/gmaps-api-issues/issues/detail?id=4433

请为此功能提出明星请求以表达您的兴趣并从Google接收更新。

答案 3 :(得分:0)

Google不会为特定城市提供自动填充功能,但我们可以手动进行。就我而言,我想显示“马哈拉施特拉邦”州的地址。

  this.GoogleAutocomplete = new google.maps.places.AutocompleteService();

    this.GoogleAutocomplete.getPlacePredictions(
  {
    input: this.autocompleteFrom.input,
    types: ['geocode'],
    componentRestrictions: { country: 'in' },
  },
  (predictions, status) => {
    this.autocompleteItemsFrom = [];
    this.zone.run(() => {
      if (predictions) {
        console.log(predictions)
        predictions.forEach((prediction) => {
          var statearray = prediction.description.split(",")
          var state = statearray[statearray.length - 2]
          if(state === ' Maharashtra'){
            this.autocompleteItemsFrom.push(prediction);
          }
        });
      }
    });
  });

我希望它将对您有帮助。