使用google API,jQuery从地理编码中提取加4个邮政编码

我在jQuery的帮助下使用谷歌API进行地理编码。 以下是我试过的代码。

jQuery(document).ready(function () { var geocoder = new google.maps.Geocoder(); jQuery('AddressPicker1').autocomplete({ source: function (request, response) { geocoder.geocode({ address: request.term}, function (results, status) { if (status === google.maps.GeocoderStatus.OK) { response(jQuery.map(results, function(item) { var streetNumber = ""; var streetName = ""; var cityName = ""; var zip = ""; var country = ""; var countyName = ""; var state = ""; for ( var component =0; component  -1 ){ streetNumber = item.address_components[component].long_name; } if ( jQuery.inArray("route", item.address_components[component].types) > -1){ streetName = item.address_components[component].long_name; } if ( jQuery.inArray("locality", item.address_components[component].types) > -1){ cityName = item.address_components[component].long_name; } if ( jQuery.inArray("postal_code", item.address_components[component].types) > -1){ zip = item.address_components[component].long_name; } if ( jQuery.inArray("country", item.address_components[component].types) > -1){ country = item.address_components[component].long_name; } if ( jQuery.inArray("administrative_area_level_2", item.address_components[component].types) > -1){ countyName = item.address_components[component].long_name; } if ( jQuery.inArray("administrative_area_level_1", item.address_components[component].types) > -1){ state = item.address_components[component].short_name; } } } return { label : item.formatted_address, value : item.formatted_address, latitude : item.geometry.location.lat(), longitude : item.geometry.location.lng(), streetNo : streetNumber, streetName : streetName, city : cityName.toUpperCase() , zip : zip, country : country, county : countyName.toUpperCase(), state : state } })); } }); }, select: function (event, ui) { jQuery('StreetNumber').val(ui.item.streetNo); jQuery('StreetName').val(ui.item.streetName); jQuery('City').val(ui.item.city); jQuery('Zip').val(ui.item.zip); jQuery('Country').val(ui.item.country); jQuery('CountyName').val(ui.item.county); jQuery('StateCode').val(ui.item.state); jQuery('GeocodedLatitude').val(ui.item.latitude); jQuery('GeocodedLongitude').val(ui.item.longitude); } 

我在搜索期间遇到了问题加上4个邮政编码。 我没有在响应中获得额外的4位数字。 例如,对于搜索文本,“60 MAIN ST,HUNTINGTON NY 11743-6961”。 我在响应中检索了’11743’到’postal_code’属性。 但是我无法从回复中找回’6961’。

在这种情况下,是否有任何选项可以获得完整的邮政编码?

或者我需要尝试其他方式来搜索加上4个邮政编码。

提前致谢。

据我所知,谷歌的地理编码器不附加ZIP +4(插件)代码。

Google不会validation地址,包括标准化其格式,而后者又包括附加ZIP + 4代码。

你可能需要的是一个实际标准化和validation地址的API。 像LiveAddress这样的API可能会做你想要的。 它将返回所有地址组件,包括+4插件代码。

我是SmartyStreets的开发人员。 以下是您在问题中提供的地址的响应示例,使用您使用的+4代码 – 在此交付点实际上有两个+4代码,因为一个是公司,YMCA,我只会显示这里的一个:

 { "input_index": 0, "candidate_index": 1, "addressee": "Ymca", "delivery_line_1": "60 Main St", "last_line": "Huntington NY 11743-6961", "delivery_point_barcode": "117436961606", "components": { "primary_number": "60", "street_name": "Main", "street_suffix": "St", "city_name": "Huntington", "state_abbreviation": "NY", "zipcode": "11743", "plus4_code": "6961", "delivery_point": "60", "delivery_point_check_digit": "6" }, "metadata": { "record_type": "F", "county_fips": "36103", "county_name": "Suffolk", "carrier_route": "C037", "congressional_district": "03", "rdi": "Commercial", "latitude": 40.87179, "longitude": -73.42655, "precision": "Zip7" }, "analysis": { "dpv_match_code": "Y", "dpv_footnotes": "AABB", "dpv_cmra": "N", "dpv_vacant": "N", "active": "Y" } } 

这是在SmartyStreets主页上查找完整结果: http ://smartystreets.com/?street = 60%20Main%20St &city = Hunntington&state = NY &zipcode = 11743

无论如何,这是地址validation和地理编码的区别。 地理编码只是将地址转换为坐标,但如果您需要+4代码,则需要地址validationAPI。 LiveAddress是您可以使用的少数几个之一,但这应该会给您一个更好的想法,您可以在那里开始搜索。