Google Places API:某些国家/地区(法国 DOM-CROM)未在自动完成中列出

问题描述 投票:0回答:1

我正在寻找自动补全法国 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) 的努美阿、塔希提岛、帕皮提...

谢谢您的帮助。

我尝试用“地理编码”替换“(区域)”,但效果并不令人满意。

autocomplete google-places-api french countries
1个回答
0
投票

目前,您只能使用
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”就好了:

© www.soinside.com 2019 - 2024. All rights reserved.