谷歌放置自动完成限制类型和隐藏键
Posted
技术标签:
【中文标题】谷歌放置自动完成限制类型和隐藏键【英文标题】:Google places AutoComplete limit types & hide key 【发布时间】:2017-01-30 20:26:48 【问题描述】:我有一个简单的 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 个问题。请在单独的问题中询问有关保护密钥的问题,以便单独回答。 完成,修改了我的问题。另一个问题在这个link 【参考方案1】:很遗憾,这还不能通过 API 获得。您只能手动执行此操作或创建一个函数来过滤 API 对您的自定义文本的响应。
参考资料:
Google Places Autocomplete Remove State and Country from Result Google Places: Limit Autocomplete Results to Cities Only, Hints Google Places javascript Autocomplete: can I remove the country from the place name?您还可以检查Places API Feature request 以查看是否已经有对此的待处理功能请求。如果没有,您可以提交Feature request。
希望这会有所帮助!
【讨论】:
【参考方案2】:您可以很容易地将您的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);
);
只是一个意见,你应该在搜索中保留国家部分 可能是不同国家/地区相似的城市名称数量 会迷惑用户。
【讨论】:
我的要求不限于一个国家。当我做一些研究时,我确实找到了这个解决方案。我需要获得世界各地国家的城市和州。只是我不希望结果中出现国家名称。最初我使用 gd.geobytes.com/AutoCompleteCity api,它有一个模板参数,我们可以在其中设置城市和州作为所需的响应。但它有一个混合上下文加载问题,所以我正在查看 google places api。目前我正在尝试为请求找到一个类似于 geobytes 的参数,如果有的话。 我已经更新了我的答案。它不完全是您正在寻找的东西,而是周围的东西。以上是关于谷歌放置自动完成限制类型和隐藏键的主要内容,如果未能解决你的问题,请参考以下文章