因此,对于我的工作,我实现了一个简单的地址搜索,该搜索使用Google的AutoCompleteAPI。这已经工作了一段时间,但最近我们遇到了一个问题,地址不正确进入系统。我计算出当您搜索带有单元号的地址时会出现此问题。
复制问题。 在此处输入任何具有单元号的地址。 https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete
例如弗莱明顿街 10/311
号选择出现的任何结果。地图上的标记现在将显示"弗莱明顿街 10 号"。因此,单元号成为街道编号。
这是我的代码的修改片段,显示了街道号码丢失的位置,单元号变成了街道号码。
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
}
我无法找到有关此的任何信息,因此,如果我缺少一些我想知道的东西,或者至少让这个问题为人所知。
现在,我有一个解决方法来保持事情运行。
编辑 - 这是我演示问题的测试
我搜索了一个随机选择的地址。 然后我选择了第一个结果"23/45 Wantirna Road, Ringwood VIC, Australia", 这意味着旺蒂尔纳路45号23单元(至少在澳大利亚)
选择搜索结果后,将向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。
遗憾的是,目前不支持自动完成的单位编号格式。公共问题跟踪器中有一个功能请求,用于在放置自动完成中添加对单元号/子场所的支持。您可以在此处查看功能请求:
https://issuetracker.google.com/issues/35830389
请注意,它已于 2018 年 6 月 29 日重新开放,Google 要求为此功能请求加注星标,以确定有多少人对此功能感兴趣。
此外,https://issuetracker.google.com/issues/111166659 年报告了与您的问题非常相似的问题,但 Google 将其标记为 #35830389 的副本。