天気情報をどう使えばよいかとの質問がありましたので,走り書き
各種サイトで天気情報が公開されています.
今回は非商用ですので,無料で使えるサービスを利用して天気を表示してみましょう.
なお、こうしたサービスの多くは個人での利用を前提としており、アプリ化して配布するなど、頻繁なアクセスをすり前提ではありませんので注意してください。
また、商用利用可能であっても、頻繁にアクセスしないようキャッシュを利用することがマナーとされています。
まず,こういうサービスのことを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に入れています.