Javascript Google放置自动完成限制类型&;隐藏键

Javascript Google放置自动完成限制类型&;隐藏键,javascript,google-maps,grails,google-maps-api-3,google-places-api,Javascript,Google Maps,Grails,Google Maps Api 3,Google Places Api,我有一个简单的grails应用程序,它有一个使用GooglePlacesAPI的自动完成输入字段。代码如下 <label for="city"> <input id="city" name="city"> </label> <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=places&key=myKey"></script>

我有一个简单的grails应用程序,它有一个使用GooglePlacesAPI的自动完成输入字段。代码如下

<label for="city">
   <input id="city" name="city">
</label>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=places&key=myKey"></script>
<script>
    var input = document.getElementById('city');
    var searchBox = new google.maps.places.SearchBox(input);
</script>
有没有办法在我得到的回复中添加模板?(我需要来自世界各地的城市和州,但没有国家在响应中)


我不熟悉这个API,提前谢谢你,你可以很容易地将你的
谷歌地图搜索结果过滤到特定的国家

只需将
选项
传递给自动完成功能,如下所示

 //options for restricting the search result to "US"
 var options = {
  types: ['(cities)'],
  componentRestrictions: {country: "us"}
 };

 //Search box code
 var input = document.getElementById('city');
 var searchBox = new google.maps.places.Autocomplete(input, options);
官方国家代码参考:

正如Vishal提到的,他希望搜索只生成全世界的城市,但谷歌地图恐怕没有这样的功能,只能在搜索结果中给出所有国家的城市名称

我们可以做的一件事是在输入后更改输入值(从中删除国家) 用户选择地址

添加以下代码:

 //Search box code
 var input = document.getElementById('city');
 var searchBox = new google.maps.places.Autocomplete(input);

 //adding event listener over the input box
 google.maps.event.addListener(searchBox, 'place_changed', function() {
        var place = searchBox.getPlace();

        //remove the country part from search result
        var rquiredAddress = place.formatted_address.slice(0, place.formatted_address.lastIndexOf(","));;
       $("#city").val(rquiredAddress);
 });
只是一个意见,你应该保持在搜索国家的一部分,因为那里 可能是不同国家和地区的城市名称相似的数量 会让用户感到困惑


不幸的是,这还不能通过API获得。您只能手动执行此操作,或者创建一个函数来过滤自定义文本的API响应

参考资料:

此外,您还可以检查是否已经存在此功能的挂起功能请求。如果没有,你可以提交一份申请


希望这有帮助

我的要求不限于一个国家。我在做一些研究时确实找到了这个解决方案。我需要了解世界各国的城市和州。只是我不想在结果中显示国家名称。最初我使用gd.geobytes.com/AutoCompleteCity api,它有一个模板参数,我们可以在其中设置城市和州作为所需的响应。但它有一个混合的上下文加载问题,所以我正在研究GooglePlacesAPI。目前,我正试图找到一个类似于geobytes的请求参数(如果有的话)。我已经更新了答案。这不完全是你要找的,但你有两个问题。请在单独的问题中询问有关保护密钥的问题,以便可以单独回答。完成,修改我的问题。另一个问题是这个
 //Search box code
 var input = document.getElementById('city');
 var searchBox = new google.maps.places.Autocomplete(input);

 //adding event listener over the input box
 google.maps.event.addListener(searchBox, 'place_changed', function() {
        var place = searchBox.getPlace();

        //remove the country part from search result
        var rquiredAddress = place.formatted_address.slice(0, place.formatted_address.lastIndexOf(","));;
       $("#city").val(rquiredAddress);
 });