都道府県名→市区町村名→町域とドリルダウンで住所を検索する JavaScript ライブラリです。
JavaScript のみで稼動するため、サーバサイドで稼動するCGIプログラムは不要です。
住所辞書データの通信には Ajax(JSON)を利用しており、動作も十分に軽量です。
【2007/12/23 追記】
jQuery にも対応しました!
『ADDRAjax』は ADdress DRilled down by Ajax の略です。
AjaxZip2 は以下からダウンロードできます。
一括アーカイブ:
addrajax-20071223.zip
ZIP
←通常パッケージはこちらです
住所辞書抜き軽量版:
addrajax-20071223-core.zip
ZIP
←プログラム本体のみ
住所辞書のみ:
addrajax-20071223-data.zip
ZIP
←データのみ詰め替え用
通常は、一括アーカイブをご利用ください。
一括アーカイブには、以下のファイルが入っています。
addrajax/addrajax.js JavaScriptメインプログラム addrajax/prototype.js JavaScriptライブラリ(Ajax通信用) addrajax/data/pref-01.json 北海道の住所データ(JSONフォーマット) addrajax/data/pref-02.json 青森県の住所データ addrajax/data/pref-03.json : (中略) addrajax/data/pref-45.json : addrajax/data/pref-46.json 鹿児島県の住所データ addrajax/data/pref-47.json 沖縄県の住所データ addrajax/work/csv2jsonpref.pl 郵便番号データ→住所データ変換プログラム addrajax/work/lib/JSON.pm JSON処理用Perlモジュール
work ディレクトリは、通常の利用では不要です。
CodeRepos で
開発中のソースコード
を公開しています。
ダウンロードしたアーカイブから addrajax ディレクトリを展開してください。
data サブディレクトリを含む全てのファイルをサーバにアップロードしておきます。
HTML ソースでは、<head>〜</head>に下記のJavaScriptを追加します。
<script src="addrajax/prototype.js"></script> <script src="addrajax/addrajax.js" charset="UTF-8"></script> <script><!-- Event.observe(window,'load',function(){ var dd = new ADDRAjax( 'pref', 'city', 'area' ); dd.JSONDATA = 'addrajax/data'; dd.init(); }); //--></script>
次に、住所選択フォーム <form>〜</form> 中に下記のような空のプルダウンを設置しておきます。
未選択時用に『↓(都道府県)』のようなoptionを用意しておきます。
<select name="pref"><option value="">↓(都道府県)</option></select> <select name="city"><option value="">↓(市区町村)</option></select> <select name="area"><option value="">↓(町域)</option></select>
以上で設定は完了です。
フォームの変数名 pref・city・area は変更できます。
フォーム中と、new ADDRAjax() 時には同じ変数名を指定してください。
都道府県名欄・市区町村名欄・町域欄は全て通常のフォームになります。
submit 時にはフォームの他の要素と同じようにサーバに値が送信されます。
ADDRAjax 開発当時は Prototype ライブラリが主流でしたが、 現在はもっとクールな jQuery ライブラリも登場しています。 jQuery を使う場合は、下記のように記述します。
<script src="addrajax/jquery.js"></script> <script src="addrajax/addrajax.js" charset="UTF-8"></script> <script><!-- $(function(){ var dd = new ADDRAjax( 'pref', 'city', 'area' ); dd.JSONDATA = 'addrajax/data'; dd.init(); }); //--></script>
Prototype を利用しても jQuery を利用しても、動作は同じです。
サイト内で既にどちらかのライブラリをご利用の場合は、
そちらをそのままご利用ください。
デフォルトで選択済の住所を指定することもできます。
以下のように、setAddress() メソッドの引数に、都道府県名・市区町村名・町域名を指定します。
マッチングは、完全一致です。1文字でも違うと正しく選択されません。
<script src="addrajax/prototype.js"></script> <script src="addrajax/addrajax.js" charset="UTF-8"></script> <script><!-- Event.observe(window,'load',function(){ var dd = new ADDRAjax( 'pref', 'city', 'area' ); dd.init(); dd.setAddress('千葉県','千葉市中央区','弁天'); }); //--></script>
onChange プロパティを利用すると、住所が選択される度にコールバック関数が起動します。
ここでは、alert() で選択内容を表示してます。
コールバック関数は、都道府県名・市区町村名・町域名を引数として、呼び出されます。
<script src="addrajax/prototype.js"></script> <script src="addrajax/addrajax.js" charset="UTF-8"></script> <script><!-- Event.observe(window,'load',function(){ var dd = new ADDRAjax( 'pref', 'city', 'area' ); dd.onChange = function (pref,city,area) { alert( pref+" "+city+" "+area ); }; dd.init(); }); //--></script>
コールバック関数を応用すると、いろいろできそうです。 →例:ドリルダウンな ALPSLAB Clip! 作成ツール
AjaxZip2 アーカイブを作成した後に、市町村合併などで郵便番号が変更されている場合もあります。
最新の郵便番号辞書を利用したい場合は、
以下の手順で最新版にアップデートにアップデートできます。
$ cd addrajax/work $ wget http://www.post.japanpost.jp/zipcode/dl/kogaki/lzh/ken_all.lzh 18:32:32 (5.67 MB/s) - `ken_all.lzh' saved [1720194/1720194] $ lha x ken_all.lzh ken_all.csv - Melted : ooooooooooooooooooooooooooooooooooooooooooooooooooooo $ perl csv2jsonpref.pl ken_all.csv 北海道 .......................................... 8205 lines 青森県 ............. 2495 lines 岩手県 .......... 1934 lines (中略) 宮崎県 ../data/pref-45.json 11170bytes 鹿児島県 ../data/pref-46.json 18895bytes 沖縄県 ../data/pref-47.json 9606bytes $ rm -f ken_all.lzh ken_all.csv
wget や lha コマンドが利用できない場合は、手元のPCやMac環境にて
ken_all.lzh
をダウンロードして、そこから ken_all.csv ファイルを展開した上で、
csv2jsonpref.pl を実行してください。
あるいはサーバ上でなくても、Windows 環境(ActivePerl)や
Mac OS X クライアントでも
csv2jsonpref.pl は実行できそうです。
ADDRAjax は、
修正 BSD ライセンス
MIT ライセンス
として公開します。
個人利用・商用利用を問わず、自由にご利用いただけます。
ただし、ソース中の著作権表示については、変更せずにご利用ください。
郵便番号辞書は日本郵政公社制作のものです。再配布は自由とのことです。
なお、ご使用にあたって、
川崎有亮
に事前・事後にご連絡いただく必要は必ずしもありません。
とはいえ、できれば、一言メール等でお知らせいただけると嬉しいです。
質問やご意見などは、コメント欄 へお願いします。
トラックバックURL⇒ http://www.kawa.net/service/tb/ajaxtb.cgi/works/ajax/addrajax/addrajax.html
Kawa.netxp © Copyright 2006 Kawasaki Yusuke