我正在寻找自动补全法国 DOM-CROM(海外行政部门和领土)的位置,但它们未在结果中列出。 这是我的配置:
var options = {
types: ['(regions)'],
componentRestrictions: {country: ["fr", "gp", "mq", "gf", "re", "pm", "yt", "nc", "pf", "mf", "tf"]},
strictBounds: true,
};
正确显示法国、瓜德罗普岛 (gp)、马提尼克岛 (mq) 的地区和城市(法国 DOM)。 法国 CROM 未出现:例如新喀里多尼亚 (nc) 的努美阿、塔希提岛、帕皮提...
谢谢您的帮助。
我尝试用“地理编码”替换“(区域)”,但效果并不令人满意。
componentRestrictions
来筛选最多5个国家以前,Google Maps Places API 不允许在自动完成过滤器中添加多个国家/地区,但有一个流行的 功能请求 来解决此问题。参考:https://issuetracker.google.com/issues/35821685
修复后,尽管这是允许的,但 Google 工程师的评论之一解释说,
此新功能有一个限制:请求最多可能限制在 5 个国家/地区。
限制多个国家会导致延迟增加。 5 个国家/地区的限制是为了控制延迟增加。
参考:https://issuetracker.google.com/issues/35821685#comment236
在上面的同一问题链接中,解决方法是使用 AutocompleteService 简单地使用多个请求。这将适用于 Javascript API 和 Web 服务。
您还可以尝试使用
strictBounds
将预测严格限制在给定视口内。您可以将其用作适合矩形区域但包含许多国家/地区的区域的替代方案。
另一件事是,目前有一个开放的功能请求,以增加自动完成请求中 5 个国家/地区限制的当前限制。参考:https://issuetracker.google.com/issues/74602145
您可能想给该问题加注星标并投票以订阅它,并让 Google 工程师知道您需要此类功能。虽然没有明确的时间表是否或何时实现,但如果您也可以将用例放在那里以获得更多理由来实现此类功能,那就太好了。
所以这里的问题不是努美阿、塔希提岛和帕皮提等上述地方没有数据。只是他们的过滤器被忽略了,因为你传入了超过 5 个
componentRestrictions
删除所有其他组件并仅传递五个组件应该表明 Places API 自动完成功能按预期工作。这是示例代码:
function initAutocomplete() {
const input = document.getElementById("pac-input");
const options = {
types: ['(regions)'],
componentRestrictions: {country: ["yt", "nc", "pf", "mf", "tf"]},
strictBounds: false,
};
const autocomplete = new google.maps.places.Autocomplete(input, options);
}
这应该返回“Noumea”就好了: