예전에 openweathermap.org에서 제공하는 기상 정보를 이용하는 방법에 대해서 간단하게 올렸었습니다. (링크)
무료로 이용할 수 있는 날씨 정보 API가 별로 없는데, 이곳 서비스는 안정적으로 잘 이용하고 있습니다.
오늘은 간단하게 객체화 시킨 소스를 보여드리겠습니다. 언제나 그렇듯이 잘못된 부분이나 더 개선할 부분이 있으면 알려주세요. ^^
class Weather { const API_URL_CURRENT = "http://api.openweathermap.org/data/2.5/weather?lat=37.56826&lon=126.977829&units=metric&APPID=<발급받은 아이디>"; const API_URL_FORECAST = "http://api.openweathermap.org/data/2.5/forecast/daily?lat=37.56826&lon=126.977829&cnt=5&units=metric&APPID=<역시 발급받은 아이디>"; public static function get_current_weather() { $c = curl_init(self::API_URL_CURRENT); $options = array( CURLOPT_HEADER => false, CURLOPT_RETURNTRANSFER => true ); curl_setopt_array($c, $options); $data = curl_exec($c); curl_close($c); if (isset($data) && $data) { $data_obj = json_decode($data); $result = array( 'current_temp' => $data_obj->main->temp, 'temp_min' => $data_obj->main->temp_min, 'temp_max' => $data_obj->main->temp_max, 'desc' => $data_obj->weather[0]->main, 'icon' => "http://openweathermap.org/img/w/{$data_obj->weather[0]->icon}.png", 'status' => 'ok' ); return $result; } } public static function get_weather_forecast() { $c = curl_init(self::API_URL_FORECAST); $options = array( CURLOPT_HEADER => false, CURLOPT_RETURNTRANSFER => true ); curl_setopt_array($c, $options); $data = curl_exec($c); curl_close($c); return json_decode($data); } } $w = Weather::get_current_weather(); echo "現在 " . number_format($w['current_temp'], 1) . "℃";
php 파일을 만드신 다음에 원하는 곳에 include만 해주면 간단한 날씨 아이콘과 현재 기온이 그림처럼 출력됩니다.
위 예제는 서울을 기준으로 했으니 다른 도시라면 lat, lon을 바꾸어주셔야 합니다.
이미지 아이콘도 $w['icon']으로 이용하실 수 있습니다만, 이쁜 아이콘이 아니라 pass. ㅋㅋ
여기에 가시면 오픈소스 날씨 관련 아이콘이 있습니다
기상 예측에 대해서도 일단 정보를 가져오는 부분은 코딩을 해 놓았습니다. json 객체이니 보시고 입맛에 맞게 이용하시면 됩니다.
'Dev > php' 카테고리의 다른 글
[php] mime type 알아내는 방법 - PHP version < 5.3 일 경우 꼼수 (0) | 2015.03.16 |
---|---|
[php] array_unique의 결과값을 json_encode 로 변환시 복불복에 대해서 (0) | 2015.02.14 |
[php] openweathermap.org의 API와 cUrl을 이용하여 기상정보 가져오기 (0) | 2014.11.06 |
[php] serialize() VS json_encode() (0) | 2014.09.30 |
application/json 포맷으로 angularJS - php script 사이에 데이터 주고받기 (0) | 2014.09.21 |