天気情報をどう使えばよいかとの質問がありましたので,走り書き
各種サイトで天気情報が公開されています.
今回は非商用ですので,無料で使えるサービスを利用して天気を表示してみましょう.
なお、こうしたサービスの多くは個人での利用を前提としており、アプリ化して配布するなど、頻繁なアクセスをすり前提ではありませんので注意してください。
また、商用利用可能であっても、頻繁にアクセスしないようキャッシュを利用することがマナーとされています。
まず,こういうサービスのことをAPI(Application Programming Interface)と呼びます.ですので,Googleなどで”天気 API”などと検索するといくつか無料サービスが出てきます.このほかにも地図や交通情報などのAPIもあります.これらは”無料 API”で検索してみてください.
このほかにも”オープンデータ”などを利用してみても良いでしょう.
サンプルにはopenweathemapのAPIを利用しました.
次のHTMLをコピペしてブラウザで開いてみてください.(新JavaScript例文辞典さんの例文を利用しています)
<!DOCTYPE html>
<html>
<head>
<title>おてんき</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no">
<!-- metaタグで スマホの挙動を制限している -->
</head>
<body>
<h1>てんき</h1>
<script type="text/javascript">
httpObj = new XMLHttpRequest();
httpObj.open("get", "http://api.openweathermap.org/data/2.5/weather?q=Nagoya,jp", true);
httpObj.onload = function(){
var myData = JSON.parse(this.responseText);
var txt = "";
for (var i=0; i<myData.weather.length; i++){
txt = txt + myData.weather[i].description + " " + myData.weather[i].main+"<br>" + "<img src=http://openweathermap.org/img/w/" + myData.weather[i].icon + ".png>";
}
document.getElementById("result").innerHTML = txt;
}
httpObj.send(null);
</script>
<div id="result"></div>
<!-- このDIVのIDを探してここに21行目で作成したHTMLをいれちゃう -->
</body>
</html>
解説はいずれ
名古屋の天気情報が沢山出るのですが,そのうち,天気の記号とアイコンを引き出しています.
実際のデータは
http://api.openweathermap.org/data/2.5/weather?q=Nagoya,jp
です.この結果(JSON)から該当する部分を抜き出して,HTMLに入れています.