Google 地图自动完成格式的地址与显示的地址不一样

Google Maps Autocomplete Formatted address is not the same as the displayed one

我有一个输入字段(我们称之为 $addressInput),我要求用户在其中提供他的地址。

然后我在后端使用这个地址来检索地址的纬度和经度。

对于某些地址,例如“214 Avenue du Général Leclerc, Eaubonne, France”,如果用户输入此地址,google 地图自动完成功能会在自动完成下拉。 第一个(= 建议 A)是“214 Avenue du Général Leclerc, Eaubonne, France”,第二个(=suggestion B)是“214 Rue du Général Leclerc, Eaubonne, France”。

但是如果用户点击建议 A,虽然输入填充的是“214 Avenue du Général Leclerc, Eaubonne, France”,但 google 地图自动完成返回的真实 formatted_address 并不是与建议A相同,是“214 Avenue de la Division Leclerc, 95160 Montmorency, France”。

为什么 google 地图自动完成功能不直接在下拉列表中提示真正的 formatted_value?为什么它在下拉列表中向用户显示地址,但在内部使用不同格式的地址? 是否可以强制自动完成 API 在选择下拉列表中显示 formatted_address? 在这种情况下,我会建议 A =“214 Avenue de la Division Leclerc, 95160 Montmorency, France”(而不是“214 Avenue du Général Leclerc ...”)和建议 B =“214 Rue du Général Leclerc, Eaubonne,法国

请在下面找到让我知道这一点的代码:

var $addressAutoCompleteInput = $('.js-address-autocomplete-input'); //this is my input

var addressAutocomplete = new google.maps.places.Autocomplete($addressAutoCompleteInput[0], {
    componentRestrictions: {country: 'fr'}
});

addressAutocomplete.addListener('place_changed', function() {
    console.log(addressAutocomplete.getPlace().formatted_address)
});

确切的行为发生在 google 地图自动竞争的官方页面上 https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete?hl=fr

地图上显示的标记与用户输入的 formatted_address 不同。

谢谢。

要了解发生了什么,您应该查看第一个建议的地点 ID。是EjEyMTQgQXZlbnVlIGR1IEfDqW7DqXJhbCBMZWNsZXJjLCBFYXVib25uZSwgRnJhbmNl

当您看到这些长地址 ID 而不是 ChIJHzwQtJeLGGARxaSLI71pDSY 之类的内容时,这意味着该地址不存在于 Google 数据库中。自动完成接受您的输入,因为他们假设您可能比 Google 更了解确切地址。因此,他们创建了插值地点 ID(长的)并将其传递给详细信息。但是,详细信息会搜索可能与用户输入匹配的现有地点,因此它们会将您的长地点 ID EjEyMTQgQXZlbnVlIGR1IEfDqW7DqXJhbCBMZWNsZXJjLCBFYXVib25uZSwgRnJhbmNl 解析为现有地点 ID ChIJ31WNvopo5kcRoAlv3ui0Aj0 214 Avenue de la Division Leclerc, 95160 Montmorency, France。

在 Google 问题跟踪器中报告了插值地点 ID 的这种不当行为,并在错误

中进行了处理

https://issuetracker.google.com/issues/35823492

根据最近的消息,Google 目前正在努力解决这个问题。随时为错误加注星标以添加您的投票并订阅通知。

是否可以强制自动完成 API 在选项下拉列表中显示 formatted_address?

为此,您需要在 Google 数据库中创建缺失的地址“214 Avenue du Général Leclerc, Eaubonne, France”。唯一的选择是向 Google 报告丢失的地址,发送反馈,如支持帮助中所述:

https://support.google.com/maps/answer/3094045?hl=en&ref_topic=3093612

一旦 Google 添加了缺失的地址,自动完成功能应该会按预期工作。

我的多个地址都面临同样的问题。

例如: 我正在查找“601 Telegraph Canyon Road”,Google 地图地址自动完成功能向我们显示 "Canyon Villa Apartment Homes, 601 Telegraph Canyon Road, Chula Vista, CA, USA" 但实际上 API 的格式化地址返回“601 Telegraph Canyon Rd, Chula Vista, CA 91910,美国。

Google 地图地址自动完成 API:

那么,我们可以做些什么作为解决方案。 我正在联系一个 姓名 格式的地址 以获得几乎准确的数据。

来自 API 的姓名和格式化地址:

我知道,这不是一个好的解决方案,但我们已将同样的问题报告给 Google。 目前,我们正在遵循此解决方案。

如果有人有确切的解决方案,请告诉我们。