我目前正在使用给定的代码,但这仅限于向一个国家/地区提出建议。 我已经看过一个实现,但它使用jQuery,我想在不使用jQuery的情况下完成它。
var input = document.getElementById('searchTextField');
var options = {
//types: ['(cities)'],
componentRestrictions: { country: 'pk' }
};
var autocomplete = new google.maps.places.Autocomplete( input, options );
答案 0 :(得分:20)
尝试将bounds
属性添加到要传递给options
构造函数的Autocomplete
对象,如下面的代码所示:
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所做的那样。或者,您允许用户从要启动的城市列表中进行选择,然后将地图视口设置为所选城市。如果您刚刚开始使用Autocomplete
componentRestrictions
,那么country 'PK'
会建议城市名称。您将了解哪种方法最适合您的应用。
最后,这并没有真正完全限制Autocomplete
仅限于城市,但它会尽可能地达到你想要的结果。
答案 1 :(得分:2)
我找到了使用自动完成类按国家/地区限制或限制搜索结果的绝佳示例,即有一个名为setComponentRestrictions的方法允许您设置国家/地区(属性),可在此处找到-https://developers.google.com /地图/文档/ JavaScript的/参照#ComponentRestrictions
答案 2 :(得分:1)
对于多个国家/地区限制,您可以使用
var options = {
types: ['(cities)'],
componentRestrictions: {
country: ['de','at','ch']
}
};