如何限制谷歌自动完成的结果只有城市和国家

我正在使用谷歌自动完成的地方的JavaScript来返回我的search框的build议结果,我需要的是只显示城市和国家相关的字符input,但谷歌API会给很多一般的地方结果,我不需要,所以如何限制结果只显示城市和国家。

我正在使用下面的示例:

<html> <head> <style type="text/css"> body { font-family: sans-serif; font-size: 14px; } </style> <title>Google Maps JavaScript API v3 Example: Places Autocomplete</title> <script src="http://maps.googleapis.com/maps/api/js?sensor=false&amp;libraries=places" type="text/javascript"></script> <script type="text/javascript"> function initialize() { var input = document.getElementById('searchTextField'); var autocomplete = new google.maps.places.Autocomplete(input); } google.maps.event.addDomListener(window, 'load', initialize); </script> </head> <body> <div> <input id="searchTextField" type="text" size="50" placeholder="Enter a location" autocomplete="on"> </div> </body> </html> 

您可以尝试国家限制

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

更多信息:

可以使用ISO 3166-1 alpha-2将结果限制到特定组。 目前,您可以使用componentRestrictions按国家过滤。

该国必须通过两字符ISO 3166-1 Alpha-2兼容国家代码。


正式分配的国家代码

 var options = { types: ['geocode'] //this should work ! }; var autocomplete = new google.maps.places.Autocomplete(input, options); 

参考其他types: http : //code.google.com/apis/maps/documentation/places/supported_types.html#table2

尝试这个

 <html> <head> <style type="text/css"> body { font-family: sans-serif; font-size: 14px; } </style> <title>Google Maps JavaScript API v3 Example: Places Autocomplete</title> <script src="http://maps.googleapis.com/maps/api/js?sensor=false&amp;libraries=places&region=in" type="text/javascript"></script> <script type="text/javascript"> function initialize() { var input = document.getElementById('searchTextField'); var autocomplete = new google.maps.places.Autocomplete(input); } google.maps.event.addDomListener(window, 'load', initialize); </script> </head> <body> <div> <input id="searchTextField" type="text" size="50" placeholder="Enter a location" autocomplete="on"> </div> </body> </html> 

我一直在玩谷歌自动完成API的一点点,这里是我可以find的最好的解决scheme,以限制你的结果只有国家:

 var autocomplete = new google.maps.places.Autocomplete(input, options); var result = autocomplete.getPlace(); console.log(result); // take a look at this result object console.log(result.address_components); // a result has multiple address components for(var i = 0; i < result.address_components.length; i += 1) { var addressObj = result.address_components[i]; for(var j = 0; j < addressObj.types.length; j += 1) { if (addressObj.types[j] === 'country') { console.log(addressObj.types[j]); // confirm that this is 'country' console.log(addressObj.long_name); // confirm that this is the country name } } } 

如果查看返回的结果对象,则会看到有一个address_components数组,其中包含表示地址不同部分的多个对象。 在每个对象中,它将包含一个“types”数组,在这个“types”数组中,你会看到与一个地址相关的不同标签,包括一个国家。

弗朗索瓦斯给出的答案是列出一个国家的所有城市。 但是,如果要求列出一个国家或所在国家的所有地区(城市+国家+其他地区等),则可以通过更改types来相应地筛选结果。

仅列出该国的城市

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

列出该国所有城市,州和地区

  var options = { types: ['(regions)'], componentRestrictions: {country: "us"} }; 

列出所有机构 – 例如餐馆,商店和办事处在国内

  var options = { types: ['establishment'], componentRestrictions: {country: "us"} }; 

更多信息和选项可在

https://developers.google.com/maps/documentation/javascript/places-autocomplete

希望这可能对某人有用

另外,由于您的国家/地区限制,您还需要缩放和居中地图!

只需使用缩放和中心参数! ;)

 function initialize() { var myOptions = { zoom: countries['us'].zoom, center: countries['us'].center, mapTypeControl: false, panControl: false, zoomControl: false, streetViewControl: false }; ... all other code ... } 
 <html> <head> <title>Example Using Google Complete API</title> </head> <body> <form> <input id="geocomplete" type="text" placeholder="Type an address/location"/> </form> <script src="http://maps.googleapis.com/maps/api/js?sensor=false&amp;libraries=places"></script> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script src="http://ubilabs.github.io/geocomplete/jquery.geocomplete.js"></script> <script> $(function(){ $("#geocomplete").geocomplete(); }); </script> </body> </html> 

有关更多信息,请访问此链接