Google 自动完成 API 可能有新错误

Google Autocomplete API possibly has a new bug

因此,在我的工作中,我实现了一个使用 Google 自动完成功能的简单地址搜索 API。这在一段时间内运行良好,但最近我们 运行 遇到了系统地址不正确的问题。我发现当您搜索带有单元号的地址时会出现此问题。

重现问题。 在此处输入任何具有单位编号的地址。 https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete

例如。弗莱明顿街 10/311 号

Select 出现的任何结果。地图上的标记现在将改为显示“10 Flemington Street”。所以单元号就变成了门牌号。

这是我的代码的修改片段,其中显示了街道号码丢失以及单元号变为街道号码的地方。

var input = document.getElementById('address_autocomplete')
var options = {
    types: ['address'],
    componentRestrictions: {country: 'au'}
};
autocomplete = new google.maps.places.Autocomplete(input, options); 
autocomplete.addListener('place_changed', addressCallBack);

function addressCallBack() {
     var place = autocomplete.getPlace();
     console.log(place.address_components); //unit number is now the street number
} 

我找不到这方面的任何信息,所以如果我遗漏了一些我很想知道的东西,或者至少让这个问题为人所知。

现在我有一个绕过 hack 的方法来保存东西 运行。

编辑 - 这是我做的一个测试来证明这个问题

I searched a randomly selected address. 然后我选择了第一个结果“23/45 Wantirna Road, Ringwood VIC, Australia”, 这意味着 Unit 23, 45 Wantirna road(至少在澳大利亚)

选择搜索结果后,系统会向 google 地点服务发送请求,以获取有关该位置的更多详细信息。 https://maps.googleapis.com/maps/api/place/js/PlaceService.GetPlaceDetails

回应

/**/_xdc_._knjkfp && _xdc_._knjkfp( {
"html_attributions" : [],
"result" : {
  "address_components" : [
     {
        "long_name" : "23",
        "short_name" : "23",
        "types" : [ "street_number" ]
     },
     {
        "long_name" : "Wantirna Road",
        "short_name" : "Wantirna Rd",
        "types" : [ "route" ]
     },
     {
        "long_name" : "Ringwood",
        "short_name" : "Ringwood",
        "types" : [ "locality", "political" ]
     },
     {
        "long_name" : "Maroondah City",
        "short_name" : "Maroondah",
        "types" : [ "administrative_area_level_2", "political" ]
     },
     {
        "long_name" : "Victoria",
        "short_name" : "VIC",
        "types" : [ "administrative_area_level_1", "political" ]
     },
     {
        "long_name" : "Australia",
        "short_name" : "AU",
        "types" : [ "country", "political" ]
     },
     {
        "long_name" : "3134",
        "short_name" : "3134",
        "types" : [ "postal_code" ]
     }
  ],
  "geometry" : {
     "location" : {
        "lat" : -37.8187267,
        "lng" : 145.2275479
     },
     "viewport" : {
        "northeast" : {
           "lat" : -37.8173781197085,
           "lng" : 145.2287786302915
        },
        "southwest" : {
           "lat" : -37.82007608029149,
           "lng" : 145.2260806697085
        }
     }
  },
  "icon" : "https://maps.gstatic.com/mapfiles/place_api/icons/geocode-71.png",
  "name" : "23 Wantirna Rd"
},
"status" : "OK"
}
)

如您所见,响应显示地址现在是“23 Wantirna Road, Ringwood VIC, Australia”。这意味着 Place 服务将单元号误认为街道号码。在这种情况下,门牌号只需要是 45 而不是 23。

很遗憾,目前位置自动完成不支持单位编号格式。 public 问题跟踪器中有一个功能请求,要求在地点自动完成中添加对单元 numbers/subpremises 的支持。您可以在此处查看功能请求:

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

请注意,它于 2018 年 6 月 29 日重新开放,Google 要求为该功能请求加注星标,以了解有多少人对此功能感兴趣。

此外,https://issuetracker.google.com/issues/111166659 中报告了与您的问题非常相似的问题,但 Google 将其标记为与 #35830389 重复。