谷歌放置了自动完成限制类型&隐藏密钥

时间:2016-09-22 10:01:00

标签: javascript google-maps grails google-maps-api-3 google-places-api

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

<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>

这很好用,但这提供了诸如城市,州,国家等信息。我只需要城市和州/国家,我不想要这个国家。

Boston, MA, United States - Is the results that I get and i Need it to look like

Boston, MA Or MA

有没有办法在我得到的回复中添加模板? (我要求来自世界各地的城市和州,但在回复中没有国家)

我是这个API的新手,先谢谢

2 个答案:

答案 0 :(得分:1)

您可以非常轻松地将google-map search结果过滤到特定国家/地区。

只需将option传递给您的自动填充功能,如下所示

 //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);
  

官方国家代码参考:   https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#AM

由于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);
 });
  

只是一个意见,你应该保持国家在那里搜索   可能是不同国家和地区相似的城市名称数量   会使用户感到困惑。

答案 1 :(得分:1)

不幸的是,这还没有通过API提供。您只能手动执行此操作或创建一个过滤API响应自定义文本的功能。

参考文献:

另外,您可以查看Places API Feature request以查看是否已有针对此功能的待处理功能请求。如果没有,您可以提交Feature request

希望这有帮助!