【发布时间】:2013-05-24 20:11:07
【问题描述】:
如何使用 Geocoder API 或其他方式将城市或州名转换为 javascript 或 angularjs 中的邮政编码?从用户输入我想转换它。
【问题讨论】:
-
您显示的是 Google 地图吗? (如果没有,我有一些建议。)
标签: javascript angularjs state zipcode
如何使用 Geocoder API 或其他方式将城市或州名转换为 javascript 或 angularjs 中的邮政编码?从用户输入我想转换它。
【问题讨论】:
标签: javascript angularjs state zipcode
谢谢大家。我解决了.....:) 这是代码:
函数 getCity( 选项) {
var geocoder = new google.maps.Geocoder(),
request;
if( options.latitude ) {
request= { 'latLng': new google.maps.LatLng( options.latitude, options.longitude ) };
} else {
request= { 'address': options.address };
};
geocoder.geocode( request, function( results, status ) {
if ( status == google.maps.GeocoderStatus.OK ) {
console.log( results );
geocoder.geocode( request, function( results, status ) {
if ( status == google.maps.GeocoderStatus.OK ) {
console.log( results );
var latitude = results[0].geometry.location.jb;
var longitude = results[0].geometry.location.kb;
var latlng = new google.maps.LatLng(latitude, longitude)
alert(latlng);
geocoder.geocode({'latLng': latlng}, function(results, status) {
//no result, check addresses
for( var resultIndex = 0; resultIndex < results.length; resultIndex++ ) {
var addresses = results[resultIndex].address_components;
for( var addressIndex = 0; addressIndex < addresses.length; addressIndex++ ) {
var types = addresses[addressIndex].types;
for( var typeIndex = 0; typeIndex < types.length; typeIndex++ ) {
if( types[typeIndex] == 'postal_code' ) {
alert(addresses[addressIndex].long_name) ;
return;
};
};
};
};
});
} else {
console.log( 'error: ' + status );
// complete();
};
});
};
【讨论】:
这是工厂示例:
feederliteModule.factory('maps', ['$q', function ($q) {
var geocoder = new google.maps.Geocoder();
return {
geocode: function (address) {
var deferred = $q.defer();
geocoder.geocode({
'address': address
}, function (results, status) {
deferred.resolve(results);
// Should also reject if AJAX errors.
});
return deferred.promise;
}
};
}]);
address 是输入的位置。
输出应该是 json 视图,您可以在其中找到邮政编码:
...
{
"long_name": "168751",
"short_name": "168751",
"types": [
"postal_code"
]
}
...
现在你可以像这样从控制器调用它:
maps.geocode(address)
【讨论】:
谷歌为此提供了一个巧妙的 API。查看此 Stack Overflow 线程,了解使用 GoogleAPI 从城市名称获取邮政编码: Easiest way to get Zip Code from City Name
【讨论】:
当然,邮政编码不一定与地点有关,而是与送货路线有关。 USPS 控制邮政编码并根据需要重新排列它们以提高邮件递送效率。许多人已经开始期望邮政编码准确地代表某个城市或城市中的某个地区,但它不是一成不变的。在美国的 42,000 个 5 位邮政编码中,大约 4% 的邮政编码每个月都会发生变化,因此无论您在哪里获取城市/州/邮政编码数据,请确保 USPS 每月对其进行更新。
除了 googlemaps 之外,还有许多商业服务可以提供您正在寻找的内容。快速谷歌搜索“zip code api”就可以了。
【讨论】: