Ram*_*amy 5 jquery geocoding street-address
我在 jQuery 的帮助下使用 google 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 < item.address_components.length; component++ ) {
if (item.address_components[component] != undefined && item.address_components[component] != null ) {
if ( jQuery.inArray("street_number", item.address_components[component].types) > -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);
}
Run Code Online (Sandbox Code Playgroud)
我在搜索加上 4 个邮政编码时遇到了这个问题。我没有在回复中得到额外的 4 位数字。例如,对于搜索文本,“60 MAIN ST,HUNTINGTON NY 11743-6961”。我通过响应中的“postal_code”属性检索了“11743”。但我无法从响应中检索“6961”。
在这种情况下,是否有任何选项可以获得完整的邮政编码?
或者我需要尝试其他方式来搜索加 4 邮政编码。
提前致谢。
据我所知,Google 的地理编码器不会附加 ZIP +4(插件)代码。
Google 不会验证地址,其中包括标准化其格式,而这又包括附加 ZIP+4 代码。
您可能需要的是一个真正标准化和验证地址的 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"
}
}
Run Code Online (Sandbox Code Playgroud)
以下是 SmartyStreets 主页上的查询,其中包含完整结果:http://smartystreets.com/?street =60%20Main%20St&city=Huntington&state=NY&zipcode=11743
无论如何,这就是地址验证和地理编码的区别。地理编码只是将地址转换为坐标,但如果您需要 +4 代码,则需要地址验证 API。LiveAddress 是您可以使用的少数几个之一,但这应该会给您一个更好的想法,您可以从那里开始搜索。
| 归档时间: |
|
| 查看次数: |
5184 次 |
| 最近记录: |