912月2007
Filed under: Web技術, ajax
Author: ueblog
路線や駅情報を提供してくれる、HeartRails ExpressのAPIを利用して、路線と駅のプルダウンを作成してみます。
HeartRails ExpressのAPIは、JSONPをサポートしているので、javascriptだけでできてしまいます。
利用するライブラリは、
JQuery
selectタグの操作を楽にしてくれるJQueryのプラグイン
JSONPをサポートしてくれるライブラリjsr_class.js
ダウンロードして、jsファイルをとりだし、下記のように宣言してあげます。
JAVASCRIPT:
-
<script src="js/jquery-1.2.1.min.js" type="text/javascript"></script>
-
<script src="js/jsr_class.js" type="text/javascript"></script>
-
<script src="js/jquery.selectboxes.pack.js" type="text/javascript"></script>
パスは適宜置き換えてください。
そして、実装コードはこんな感じになります。
JAVASCRIPT:
-
<script type="text/javascript">
-
//<![CDATA[
-
// 都道府県プルダウン変更時
-
var prefObj = {};
-
function PrefChange(){
-
if ($("#pref").val()){
-
var url = 'http://express.heartrails.com/api/json?method=getLines'
-
+ '&prefecture=' + encodeURIComponent( $("#pref").val() )
-
+ '&jsonp=PrefCallback';
-
prefObj = new JSONscriptRequest( url );
-
prefObj.buildScriptTag();
-
prefObj.addScriptTag();
-
} else {
-
$("#train").removeOption(/./);
-
}
-
}
-
function PrefCallback(json){
-
if (!json){ return; }
-
if (json.response.line.length == 0) { return; }
-
-
var lines = json.response.line;
-
var options = {};
-
for (var i = 0; i <lines.length; i++){
-
options[lines[i]] = lines[i];
-
}
-
$("#train").removeOption(/./);
-
$("#train").addOption(options,false);
-
prefObj.removeScriptTag();
-
}
-
-
// 路線プルダウン変更時
-
var trainObj = {};
-
function TrainChange(){
-
if ($("#train").val()){
-
var url = 'http://express.heartrails.com/api/json?method=getStations'
-
+ '&line=' + encodeURIComponent( $("#train").val() )
-
+ '&jsonp=TrainCallback';
-
trainObj = new JSONscriptRequest( url );
-
trainObj.buildScriptTag();
-
trainObj.addScriptTag();
-
} else {
-
$("#station").removeOption(/./);
-
}
-
}
-
function TrainCallback(json){
-
if (!json){ return; }
-
if (json.response.station.length == 0) { return; }
-
-
var stations = json.response.station;
-
var options = {};
-
for (var i = 0; i <stations.length; i++){
-
options[stations[i].name] = stations[i].name;
-
}
-
$("#station").removeOption(/./);
-
$("#station").addOption(options,false);
-
trainObj.removeScriptTag();
-
}
-
//]]>
-
</script>
HTMLはシンプルにこんな感じで。(都道府県は省略しました・・・。都道府県の値もAPIから取得できますが。手抜きで。)
HTML:
-
<select id="pref" onChange="PrefChange();">
-
<option value="">都道府県を選択
</option>
-
-
-
-
-
</select>
-
-
<select id="train" onChange="TrainChange();">
-
<option value="">路線を選択
</option>
-
</select>
-
-
-
<option value="">駅を選択
</option>
-
</select>
サンプルはこちら
これは地図系のサイトでかなり使えそうですね。
関連する記事
←ぽちっとな
<<エンジニアには副収入がある
JavaでRESTするには(RestletによるAPI利用)>>

(
3)

(
0)

(
0)

(
1)
Total: 4