9

我目前正在使用给定的代码,但这仅将建议限制在一个国家/地区。我见过一种实现,但它使用 jQuery,我想在不使用 jQuery 的情况下做到这一点。

var input = document.getElementById('searchTextField');
var options = {
    //types: ['(cities)'],
    componentRestrictions: { country: 'pk' }
};
var autocomplete = new google.maps.places.Autocomplete( input, options );
4

3 回答 3

23

尝试向您传递给构造函数bounds的对象添加一个属性,如以下代码所示:optionsAutocomplete

var southWest = new google.maps.LatLng( 25.341233, 68.289986 );
var northEast = new google.maps.LatLng( 25.450715, 68.428345 );
var hyderabadBounds = new google.maps.LatLngBounds( southWest, northEast );

var options = {
    bounds: hyderabadBounds,
    types:  ['establishment [or whatever fits your usage]'],
    componentRestrictions: { country: 'pk' }
};

如果您希望Autocomplete边界由地图的当前视口驱动,您可以将地图的边界绑定到Autocomplete以下方式:

autocomplete.bindTo('bounds', map);

或者,如果它在您的应用程序中工作得更好,您还可以选择在必要时显式设置边界:

autocomplete.setBounds( someOtherBounds );

这可能意味着您创建了一个默认城市,就像我在上面的示例中对 Hyberabad 所做的那样。或者您允许您的用户从城市列表中选择开始,然后将地图视口设置为所选城市。如果您像您已经在做的那样从of开始,Autocomplete则会建议城市名称。您将知道什么最适合您的应用程序。componentRestrictionscountry 'PK'

最后,这并没有真正完全地将其限制Autocomplete在城市中,但它会尽可能地达到您希望的结果。

于 2012-05-18T01:00:44.780 回答
2

我发现了使用 Autocomplete 类按国家/地区限制或限制搜索结果的绝佳示例,即有一个名为 setComponentRestrictions 的方法允许您设置国家/地区(属性),可在此处找到 -https://developers.google.com/maps/文档/javascript/reference#ComponentRestrictions

有关示例,请查看https://code.google.com/p/gmaps-samples-v3/source/browse/trunk/places/2012-may-hangout/autocomplete.html?r=290

于 2013-01-01T04:32:28.867 回答
1

对于多个国家/地区限制,您可以使用

var options = {
    types: ['(cities)'],
    componentRestrictions: {
        country: ['de','at','ch']
    }
};
于 2018-08-02T12:50:59.433 回答