/**
* Copyright m_oushiden ( http://wonderfl.net/user/m_oushiden )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/pxiK
*/
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx = "http://www.adobe.com/2006/mxml" layout = "absolute" applicationComplete = "init();">
<mx:ComboBox id = "state"
y = "0"
dataProvider = "{prof}"
fontSize = "25"
width = "350"
change = "statechange(event);"
close = "statechange(event);"
/>
<mx:ComboBox id = "city"
y = "50"
dataProvider = "{cityprof}"
fontSize = "25"
width = "350"
change = "citychange(event);"
close = "citychange(event);"
/>
<mx:ComboBox id = "town"
y = "100"
dataProvider = "{townprof}"
fontSize = "25"
width = "350"
/>
<mx:Label id = "en"
y = "150"
fontSize = "20"
text = "取得データ" />
<mx:TextArea id="ta" x="0" y="200" width="100%" height="100%" fontSize="16" />
<mx:Script>
<![CDATA[
import com.adobe.serialization.json.*;
import mx.core.UIComponent;
import mx.collections.ArrayCollection;
import mx.events.DropdownEvent;
private var txtCityLoader:URLLoader = new URLLoader();
private var txtTownLoader:URLLoader = new URLLoader();
import flash.utils.escapeMultiByte;
import flash.utils.unescapeMultiByte;
private var loader:URLLoader;
private var xmlData:XML;
[Bindable]
//都道府県の一覧コンボボックスに入れるデータ
private var prof:ArrayCollection = new ArrayCollection(
[
{label:"都道府県を選択してください",data:"0"},
{label:"北海道",data:"1"},
{label:"青森県",data:"2"},
{label:"岩手県",data:"3"},
{label:"宮城県",data:"4"},
{label:"秋田県",data:"5"},
{label:"山形県",data:"6"},
{label:"福島県",data:"7"},
{label:"茨城県",data:"8"},
{label:"栃木県",data:"9"},
{label:"群馬県",data:"10"},
{label:"埼玉県",data:"11"},
{label:"千葉県",data:"12"},
{label:"東京都",data:"13"},
{label:"神奈川県",data:"14"},
{label:"新潟県",data:"15"},
{label:"富山県",data:"16"},
{label:"石川県",data:"17"},
{label:"福井県",data:"18"},
{label:"山梨県",data:"19"},
{label:"長野県",data:"20"},
{label:"岐阜県",data:"21"},
{label:"静岡県",data:"22"},
{label:"愛知県",data:"23"},
{label:"三重県",data:"24"},
{label:"滋賀県",data:"25"},
{label:"京都府",data:"26"},
{label:"大阪府",data:"27"},
{label:"兵庫県",data:"28"},
{label:"奈良県",data:"29"},
{label:"和歌山県",data:"30"},
{label:"鳥取県",data:"31"},
{label:"島根県",data:"32"},
{label:"岡山県",data:"33"},
{label:"広島県",data:"34"},
{label:"山口県",data:"35"},
{label:"徳島県",data:"36"},
{label:"香川県",data:"37"},
{label:"愛媛県",data:"38"},
{label:"高知県",data:"39"},
{label:"福岡県",data:"40"},
{label:"佐賀県",data:"41"},
{label:"長崎県",data:"42"},
{label:"熊本県",data:"43"},
{label:"大分県",data:"44"},
{label:"宮崎県",data:"45"},
{label:"鹿児島県",data:"46"},
{label:"沖縄県",data:"47"} ]);
//市区町村の初期値コンボボックスに入れるデータ
[Bindable]
private var cityprof:ArrayCollection = new ArrayCollection(
[
{label:"市区町村を選択してください",data:"0"}]);
//町域の初期値コンボボックスに入れるデータ
[Bindable]
private var townprof:ArrayCollection = new ArrayCollection(
[
{label:"町域を選択してください",data:"0"}]);
//都道府県変更時のイベント
private function statechange(event:Event):void
{
//現在選択されている項目を取得する
var item:Object = state.selectedItem;
var CITYURL:String = 'http://akibaengineer.com/yubinapi/citytext.php?state=' + escape(item.data);
//テキスト形式で読み込む
txtCityLoader.dataFormat = URLLoaderDataFormat.TEXT;
txtCityLoader.addEventListener(Event.COMPLETE, onCityLoaded);
state.enabled = false;
city.enabled = false;
town.enabled = false;
//読み込み開始
txtCityLoader.load(new URLRequest(CITYURL));
}
//市区町村のデータ取得終了のイベント
public function onCityLoaded(event:Event):void {
var outta:String = "";
var city_data:ArrayCollection = new ArrayCollection();
var ar:Array = String(txtCityLoader.data).split(";");
city_data.addItem({label:"市区町村を選択してください", data:""});
// 市区町村データの追加
//一個多く切り取ってしまうので最後は削る
for (var i:int = 0; i < ar.length - 1; i++) {
var s:Array = (ar[i] as String).split(",");
city_data.addItem( { label:s[0], data:s[1] } );
outta += s[0] + ";";
}
ta.text = outta;
en.text = "市区町村一覧";
city.dataProvider = city_data;
txtCityLoader.removeEventListener(Event.COMPLETE, onCityLoaded);
txtTownLoader.removeEventListener(Event.COMPLETE, onTownLoaded);
//町域のデータは問答無用でクリア
var town_data:ArrayCollection = new ArrayCollection();
town_data.addItem({label:"町域を選択してください", data:""});
town.dataProvider = town_data;
state.enabled = true;
city.enabled = true;
town.enabled = true;
}
//市区町村変更時のイベント
private function citychange(event:Event):void
{
//現在選択されている項目を取得する
var item:Object = city.selectedItem;
var TOWNURL:String = 'http://akibaengineer.com/yubinapi/towntext.php?townid=' + escape(item.data);
//テキスト形式で読み込む
txtTownLoader.dataFormat = URLLoaderDataFormat.TEXT;
txtTownLoader.addEventListener(Event.COMPLETE, onTownLoaded);
state.enabled = false;
city.enabled = false;
town.enabled = false;
//読み込み開始
txtTownLoader.load(new URLRequest(TOWNURL));
}
//町域のデータ取得終了のイベント
public function onTownLoaded(event:Event):void {
var town_data:ArrayCollection = new ArrayCollection();
var ar:Array = String(txtTownLoader.data).split(";");
town_data.addItem({label:"町域を選択してください", data:""});
// 市区町村データの追加
//一個多く切り取ってしまうので最後は削る
for (var i:int = 0; i < ar.length - 1; i++) {
town_data.addItem({label:ar[i], data:i});
}
txtTownLoader.removeEventListener(Event.COMPLETE, onTownLoaded);
town.dataProvider = town_data;
ta.text = txtTownLoader.data;
en.text = "町域一覧";
state.enabled = true;
city.enabled = true;
town.enabled = true;
}
private function init():void
{
Security.allowDomain('*');
}
]]>
</mx:Script>
</mx:Application>