- Home ›
- Google Maps API入門 ›
- 外部ファイルの読み込み(GDownloadUrl) ›
- HERE
JSON形式のファイルの取得
広告
次はJSON形式のファイルを用意し、ダウンロードして利用してみます。次のようなJSON形式のファイルを用意しました。
{
"marker":[
{"lat":41.772596,"lng":140.725261,"name":"函館朝市"},
{"lat":41.796864,"lng":140.756965,"name":"五稜郭"},
{"lat":41.772912,"lng":140.816231,"name":"函館空港"}
]
}
まずは読み込んだデータをeval関数を使ってオブジェクトに変換します。
function createMap(jsondata, statusCode){
var obj = eval("(" + jsondata + ")");
}
各プロパティに対する値を取り出します。これを含まれているデータの数だけ繰り返します。
function createMap(jsondata, statusCode){
var obj = eval("(" + jsondata + ")");
for (var i = 0; i < obj.marker.length; i++) {
var lat = obj.marker[i].lat;
var lng = obj.marker[i].lng;
var name = obj.marker[i].name;
}
}
後は取得した座標や名称に応じて必要な処理を行います。
サンプルプログラム
では試してみます。
var map;
function initialize() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(41.791217,140.775032), 12);
GEvent.addListener(map, "click", clickAction);
}
}
function downloadData(){
GDownloadUrl("data.json", function dispData(data, statusCode){
var obj = eval("(" + data + ")");
for (var i = 0; i < obj.marker.length; i++) {
var lat = obj.marker[i].lat;
var lng = obj.marker[i].lng;
var name = obj.marker[i].name;
map.addOverlay(createMarker(lat, lng, name));
}
});
}
function createMarker(lat, lng, name) {
var marker = new GMarker(new GLatLng(lat, lng));
var html = "<p>" + name + "</p>";
GEvent.addListener(marker, "click", function(){
marker.openInfoWindowHtml(html);
});
return marker;
}
<!DOCTYPE html "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>サンプル:JSON形式のファイルの取得</title>
<script src="http://maps.google.com/maps?file=api&v=2&key=(key)&sensor=false"
type="text/javascript" charset="utf-8"></script>
<script src="./js/code4_1.js" type="text/javascript"></script>
</head>
<body onload="initialize()" onunload="GUnload()">
<div id="map_canvas" style="width: 400px; height: 400px"></div>
<form>
<p>
<input type="button" id="btn" value="ダウンロード" onclick="downloadData()" />
</p>
</form>
</body>
</html>
{
"marker":[
{"lat":41.772596,"lng":140.725261,"name":"函館朝市"},
{"lat":41.796864,"lng":140.756965,"name":"五稜郭"},
{"lat":41.772912,"lng":140.816231,"name":"函館空港"}
]
}
ではブラウザで上記のURLを見てみます。
地図下の「ダウンロード」ボタンを押すと、サーバからJSON形式のファイルを取得し、ファイルに書かれていた3つの地点にマーカーを設置します。
マーカーをクリックすると、その地点の名称が記載された情報ウィンドウを表示します。
( Written by Tatsuo Ikura )
AjaxTower