Google maps Google Maps自动完成提示与返回的位置不匹配

Google maps Google Maps自动完成提示与返回的位置不匹配,google-maps,google-maps-api-3,Google Maps,Google Maps Api 3,Google Maps autocomplete几乎在所有情况下都能工作,但在一个地址上的行为却很奇怪 ,感谢@geocodezip,展示了这个问题 这与类似,只是在该问题上没有返回任何位置。这将返回一个名称类似的位置,但位于不同的位置 正确的地址出现在建议框中,但在place\u changed事件中不同。这两个地址彼此相距很远 可以看出,这在autocomplete演示中是可复制的,所以我不认为这是一个实现问题。有人见过这种行为并设法纠正了吗 此外,通过自动完成服务请求原始自动完成建议返回

Google Maps autocomplete几乎在所有情况下都能工作,但在一个地址上的行为却很奇怪

,感谢@geocodezip,展示了这个问题

这与类似,只是在该问题上没有返回任何位置。这将返回一个名称类似的位置,但位于不同的位置

正确的地址出现在建议框中,但在
place\u changed
事件中不同。这两个地址彼此相距很远

可以看出,这在autocomplete演示中是可复制的,所以我不认为这是一个实现问题。有人见过这种行为并设法纠正了吗

此外,通过
自动完成服务
请求原始自动完成建议返回的地址的查询预测将返回
零结果

new google.maps.places.AutocompleteService();
    service.getQueryPredictions({ input: '77 Main Road, Crowthorne AH, Sandton, South Africa' }, function(predictions, status) {
      if (status != google.maps.places.PlacesServiceStatus.OK) {
        alert(status);
        return;
      }

      predictions.forEach(function(prediction) {
        console.log(prediction);

      });
    });

您遇到的问题已在Google issue tracker中报告。您可以在此处查看并添加您的评论:

让我解释一下问题是什么。如果查看PlaceID文档,您将看到PlaceID有两个选项

短位置ID如
ChIJrTLr-GyuEmsRBfy61i59si0
和长位置ID如
eisxmybnyxjrzqgu3ryzwv0lcbxawxtaw5ndg9ulcboqyayodqwmswgvnb
。当你看到短位置ID,这意味着谷歌在他们的数据库中有这个地址的确切功能,当你看到长位置ID,这意味着谷歌没有一个确切的功能,并试图插入一个地址。有时,插值在自动完成和就地详细信息方面的工作方式不同,因此在本例中,您观察问题中描述的问题并报告为

现在让我们检查一下您的示例中的位置ID是什么。我执行以下位置自动完成请求:

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=77%20Main%20Road%2C%20Crowthorne%20AH&key=API_KEY

我可以在回复中看到以下文本

"predictions":[
  {
    "description":"77 Main Road, Crowthorne AH, Sandton, South Africa",
    "id":"a0ab043870d062bad00d5ce2ed91faaf7250efbe",
    "matched_substrings":[
      {
        "length":12,
        "offset":0
      },
      {
        "length":13,
        "offset":14
      }
    ],"place_id":"EjI3NyBNYWluIFJvYWQsIENyb3d0aG9ybmUgQUgsIFNhbmR0b24sIFNvdXRoIEFmcmljYQ",
....
位置ID是一个长的
EjI3NyBNYWluIFJvYWQsIENyb3d0aG9ybmUgQUgsIFNhbmR0b24sIFNvdXRoIEFmcmljYQ
,这意味着地址是内插的

最直截了当的解决办法可能是为“南非桑德顿克劳索恩市主干道77号”创建一个准确地址。只有一种方法可以向Google报告丢失的数据,以下支持帮助中对此进行了描述:

你应该发送反馈,让谷歌知道地址“77 Main Road,Crowthorne啊,Sandton,South Africa”不见了。否则,您应该等待错误35830687被解决


我希望这能解释你的怀疑

RE:为什么这个代码不起作用,我使用的代码与Google自己的示例相同,对于这个特定的地址集,它不起作用。(以及生成的place_id的详细信息请求)。看来PlacesAPI确实存在问题。有什么解决方法吗?当
place\u changed
事件触发时,我可以根据输入框中的自动完成信息在更新到错误的地址之前获得正确的地址,但显然它是一个格式化字符串,没有分解为places组件。似乎places数据中存在数据问题。也许可以使用谷歌地图工具来报告。谢谢,这就解释了。由于我们正在搜索的地址的性质,有很多这样的地址,因此,如果有一个长的
place\u id
,我想我可以使用自动完成服务返回的术语,让他们手动确认地址。我可以通过在侦听器中检查返回的
place\u id
的长度来检测这一点吗?据我所知,确切的功能有一个以
Ch..
,插值特征有一个以
E..
开头的长位置ID。您可以应用此逻辑,但请注意,Google可以在没有任何事先通知的情况下更改格式。