Geocoder APIまたはその他の方法を使用して、javascriptまたはangularjsで市または州の名前を郵便番号に変換するにはどうすればよいですか? ユーザー入力から変換したい。
4 に答える
皆さん、ありがとうございました。私はそれを解決しました..... :) コードは次のとおりです。
関数 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();
};
});
};
もちろん、郵便番号は必ずしも場所とは関係ありませんが、配送ルートとは関係ありません。USPS は郵便番号を管理し、必要に応じて郵便番号を再配置して、郵便物を効率的に配達します。多くの人は、郵便番号が特定の都市または都市内の地域を正確に表していると期待するようになりましたが、それは静的ではありません。米国の 42,000 の 5 桁の郵便番号のうち、約 4% が毎月変更されるため、都市/州/郵便番号のデータをどこで取得しても、USPS によって毎月更新されるようにしてください。
Google マップに加えて、探しているものを提供する多くの商用サービスがあります。「zip code api」をグーグルですばやく検索すると、うまくいきます。
Google には、そのための洗練された API があります。GoogleAPI を使用して都市名から郵便番号 を取得する方法については、このスタック オーバーフロー スレッドを確認してください: 都市名から郵便番号を取得する最も簡単な方法
工場の例は次のとおりです。
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)