
ก็ไม่มีอะไรมาก Tutorial สั้นอันนี้คือการใช้งาน API ของ Open Weather ร่วมกับ PHP หรือ jQuery มาประยุกต์ใช้สร้างแอพพลิเคชัน พยากรณ์อาการแบบง่ายๆ ครับ
ก่อนอื่นก็ไม่ต้อง พูดพร่ำทำเพลงอะไรครับไปที่เว็บไซต์ http://www.openweathermap.org/ สมัครสมาชิกให้กำลังใจเค้าหน่อยเมื่อสมัครสมาชิกเสร็จเราก็เรียกใช้งาน API ของเค้ากันครับ

หน้า API มีการเรียกหลายแบบนะครับ ค่าที่ Return กลับมาจะมีทั้ง XML และ JSON ตัวอย่างก็จะมีตั้งแต่การอ้างตำแหน่ง Lat,Lon ของเราเหมาะกับการใช้ตำแหน่งปัจจุบัน หรือชื่อเมืองที่เราอยู่
- http://api.openweathermap.org/data/2.5/weather?q=Bangkok
- http://api.openweathermap.org/data/2.5/weather?q=Bangkok&mode=xml
การ Return ค่าก็จะเป็นตามรูปแบบนี้ (ตัวอย่างคือ JSON)
{
coord: {
lon: 100.52,
lat: 13.75
},
sys: {
type: 1,
id: 7925,
message: 0.0225,
country: "TH",
sunrise: 1409007959,
sunset: 1409052804
},
weather: [
{
id: 803,
main: "Clouds",
description: "broken clouds",
icon: "04d"
}
],
base: "cmc stations",
main: {
temp: 304.85,
pressure: 1008,
humidity: 59,
temp_min: 303.15,
temp_max: 306.48
},
wind: {
speed: 1.5,
deg: 170
},
clouds: {
all: 75
},
dt: 1409030711,
id: 1609350,
name: "Bangkok",
cod: 200
}
คำสั่ง PHP มาเรียกใช้ก็จะง่ายๆ เลยครับ ตัวอย่างก็คือ
<?php
$f_source='http://api.openweathermap.org/data/2.5/weather?q=Bangkok';
$json_f = file_get_contents($f_source);
$f_get_list = json_decode($json_f);
foreach ($f_get_list as $fgetlist ) {
$cityname=$fgetlist->name;
}
foreach ($f_get_list->weather as $weatherlist ) {
$weatherstatus=$weatherlist->main;
}
$temp=$f_get_list->main->temp;
$windspeed=$f_get_list->wind->speed;
?>
จะเห็นว่าค่าที่เรียกมาจะประกอบด้วย
- CityName ชื่อเมือง
- Weather Status สภาพอากาศ
- Temp ค่าอุณหภูมิ ณ เวลานั้น
- WindSpeed คือค่าความแรงลม
ตัวอย่างผมก็ลองทำ ขำ ร่วมกับ fontawesome.css ผ่าน jQuery Mobile ก็จะได้แอพพลิเคชันสวยๆ แบบนี้ครับ
ลองทำกันดูไม่น่ายาก
เพิ่มเติม องศาเซลเซียส ใช้ฟังก์ชันนี้นะครับ
<?php echo $celsius = ceil($fahrenheit - 273.15);?>
ส่วนการเรียกว่า ตอนนี้เป็นเวลา กลางวัน หรือกลางคืน Return เป็น Day และ Night ก็
$sunrise = date_sunrise(time(), SUNFUNCS_RET_DOUBLE, $latitude, $longitude, 96, 0);
$sunset = date_sunset(time(), SUNFUNCS_RET_DOUBLE, $latitude, $longitude, 96, 0);
$now = date("H") + date("i") / 60 + date("s") / 3600;
if ($sunrise < $sunset) {
if (($now > $sunrise) && ($now < $sunset)){
$icond="Day";
}else{
$icond="Night";
}
}else{
if (($now > $sunrise) || ($now < $sunset)) {
$icond="Day";
}else{
$icond="Night";
}
}
ไม่ยากใช่ไหมครับ?




