Javascript Google放置自动完成限制类型&;隐藏键
我有一个简单的grails应用程序,它有一个使用GooglePlacesAPI的自动完成输入字段。代码如下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>
<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);
});