是否有解析Google自动完成响应的正确方法,以便我们总能获得一个地址部分,该地址部分具有邮局期望的地址的不同部分?
例如,当您使用Google自动完成输入482 East 9th St Brooklyn NY
时,会得到以下内容。
"address_components" : [
{
"long_name" : "482",
"short_name" : "482",
"types" : [ "street_number" ]
},
{
"long_name" : "East 9th Street",
"short_name" : "E 9th St",
"types" : [ "route" ]
},
{
"long_name" : "Kensington",
"short_name" : "Kensington",
"types" : [ "neighborhood", "political" ]
},
{
"long_name" : "Brooklyn",
"short_name" : "Brooklyn",
"types" : [ "political", "sublocality", "sublocality_level_1" ]
},
{
"long_name" : "Kings County",
"short_name" : "Kings County",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "New York",
"short_name" : "NY",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United States",
"short_name" : "US",
"types" : [ "country", "political" ]
},
{
"long_name" : "11218",
"short_name" : "11218",
"types" : [ "postal_code" ]
}
],
"formatted_address" : "482 E 9th St, Brooklyn, NY 11218, USA",
格式化的地址正确显示。但是,当您尝试使用诸如以下脚本之类的脚本进行解析时,您会把肯辛顿称为“城市”]
function parseAddressConponents(addressComponents, address, slot) { addressComponents.forEach(function (c) { switch (c.types[slot]) { case 'street_number': address.streetNumber = c.short_name; break; case 'route': address.streetName = c.short_name; break; case 'neighborhood': address.neighborhood = c.short_name; address.city = c.short_name; break; case 'locality': address.locality = c.short_name; address.city = !address.neighborhood ? c.short_name : address.city; break; case 'sublocality': address.sublocality = c.short_name; address.city = !address.locality && !address.city && !address.neighborhood ? c.short_name : address.city; break; case 'administrative_area_level_3': address.city = (!address.neighborhood && !address.locality && !address.sublocality) ? c.short_name : address.city; break; case 'postal_town': address.city = (!address.neighborhood && !address.locality && !address.sublocality) ? c.short_name : address.city; break; case 'administrative_area_level_1': // Note some countries don't have states address.state = c.short_name; break; case 'postal_code': address.zip = c.short_name; break; case 'country': address.country = c.long_name === 'United States' ? 'USA' : c.long_name; break; default: } }); return address; }
有人知道Google是否有用于
formatted_address
字段的算法吗?
是否有解析Google自动完成响应的正确方法,以便我们总能获得一个地址部分,该地址部分具有邮局期望的地址的不同部分?例如,当...