古い記事なのに検索上位に来てしまい申し訳ないです。
JavaScriptでJSONを使ったお天気情報の取得をご覧になりたい方は以下の記事です。
JavaScriptでJSONを使ったお天気情報の取得をご覧になりたい方は以下の記事です。

JavaScript:APIサービスのJSONデータを取得して表示する
残念ながら2020年7月31日をもって本記事で利用していたライブドアお天気サービスAPIが終了したため、以下内容は利用できなくなりました。JSONデータの取得や整形に関しては参考になりますが、プログラムは実行できませんのでご了承ください。(...
2018年10月26日更新
2016年6月現在、openwethermapの仕様が変わっており、APIキーを取得してからの利用となっています。
以下の記事は古い内容となります。ご了承ください。(管理人)
————————
openweathermap.orgというサイトで全世界の天気データが提供されている。
JSONデータでの取得が可能ということで、JavaScriptからopenweathermapのAPIにアクセスして表示させた。
取得した地域は、指定されたURLの末尾に「Tokyo,jp」などとすれば簡単に取得できる。詳しくはopenweathermapのAPIマニュアルを見れば分かる。(英語なのでなんとなくわかる…はず!)
緯度と経度での指定もできるようだ。
今回わたしが取得したデータは、一週間の天気情報だ。
JSONデータのlist配列0~6に今日から一週間分のデータが取得される。
例えば、明日の天気は、list[1]を参照すればよいことになる。
お天気アイコンも提供されており、これもJSONデータの文字列でファイル名が取得できるようになっている。
ソースコード
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>お天気情報取得</title>
<style>
body{
background: #ddd;
font-family: 'メイリオ', Osaka;
}
h1{
border-bottom: solid 1px #000;
}
#result{
font-size:24px;
}
</style>
<script>
// 取得する地域
var city = "Mito,jp";
var httpObj = new XMLHttpRequest();
// openweathermapからJSONデータ取得
httpObj.open("GET", "http://api.openweathermap.org/data/2.5/forecast/daily/?units=metric&q=" + city + "&cnt=7", true);
httpObj.onload = function(){
var data = JSON.parse(this.responseText); // JSON形式データを変換
var cityName = data.city.name; // 都市名を取得
// データ整形
var day = ["今日", "明日"];
var tag = "";
tag += "<p>" + cityName + "</p>";
tag += "<table>";
for(var i=0; i<2; i++){
var tempMax = Math.floor(Number(data.list[i].temp.max)*10)/10 + " ℃"; // 最高気温
var tempMin = Math.floor(Number(data.list[i].temp.min)*10)/10 + " ℃"; // 最低気温
var icon = "<img src='http://openweathermap.org/img/w/" + data.list[i].weather[0].icon + ".png'>"; // お天気アイコン
tag += "<tr>";
tag += "<td>" + day[i] + "</td>";
tag += "<td>" + icon + "</td>";
tag += "<td>最高</td><td>" + tempMax + "</td>";
tag += "<td>最低</td><td>" + tempMin + "</td>";
tag += "</tr>";
}
tag += "</table>";
var result = document.getElementById("result");
result.innerHTML = tag;
}
httpObj.send(null);
</script>
</head>
<body>
<h1>お天気情報取得</h1>
<div id="result">Getting weather...</div>
</body>
</html>


コメント