Talk to me about anything. If you’d like to work with me, or
even if you just need a hug, I’ll get back to you shortly.

Please enter your name


Say something!

Shoutbox
[Software Akuntansi Laporan Keuangan Terbaik ]
Software Akuntansi Laporan Keuangan Terbaik
06/02/12Gravatar
[Kata Kata Lucu ]
http://hujangede.blogspot.com/2011/12/kata-kata-lucu-2012.html
06/02/12Gravatar
[souvenir pernikahan ]
http://www.souvenirku182.blogspot.com/ menyediAKAN souvenir pernikahan MURAH
03/02/12Gravatar
[kursi tamu ]
http://www.rotankita.com/ menyediakan kursi tamu dari rotan.
03/02/12Gravatar
[kopi luwak ]
menyediakan kopi luwak. http://www.kopiluwakbandung.com/
03/02/12Gravatar
[cream anisa ]
cream anisa memutihkan wajah yang penuh dengan flex... http://www.cantikherbal.com/
03/02/12Gravatar
[kursus bahasa korea ]
mau kursus bahasa korea online?? kli ini http://tki-mandiri.com/
03/02/12Gravatar

Arsip Shoutbox

Script Prakiraan Cuaca dengan Google Weather API

20-02-2010 | By : Po3nX



Pernah liat info prakiraan cuaca yang di iGoogle? Pengen bisa pasang widget cuaca yang seperti itu? Berikut saya coba sharing script untuk menampilkan prakiraan cuaca yang mengambil data dari google weather api..



Langsung saja berikut adalah source phpnya, silahkan modifikasi tampilannya sesuai selera anda

1. Buat class yang berfungsi untuk mengambil data2 dari google weather api sebagai berikut:

class_weather.php
CODE
  1.  
  2. <?php
  3.  
  4. class weather
  5. {
  6.         public static $response;
  7.         public static $location;
  8.         public static $current;
  9.         public static $nextdays;
  10.         public static $error = false;
  11.        
  12.         public function weather()
  13.         {
  14.                 $this->location = 'Jakarta';
  15.         }
  16.        
  17.         public function get()
  18.         {
  19.                 if (empty($this->location)) {
  20.                         $this->error = true;
  21.                         return false;
  22.                 }
  23.                 $requestAddress = "http://www.google.com/ig/api?weather=".trim(urlencode($this->location))."&hl=en";
  24.                 $xml_str = file_get_contents($requestAddress,0);
  25.                 $xml = new SimplexmlElement($xml_str);
  26.                 if (!$xml->weather->problem_cause) {
  27.                         $this->response = $xml->weather;
  28.                         $this->parse();
  29.                 }else{
  30.                         $this->error = true;
  31.                 }
  32.         }
  33.        
  34.         public function parse()
  35.         {
  36.                 foreach($this->response as $item) {
  37.                         $this->current = $item->current_conditions;
  38.                         foreach($item->forecast_conditions as $new) {
  39.                                 $this->nextdays[] = $new;              
  40.                         }      
  41.                 }
  42.         }
  43.        
  44.         public function display()
  45.         {
  46.                 echo "<table border=0 cellspacing=0 cellpadding=3><tr>";
  47.                 foreach($this->nextdays as $new) {                     
  48.                         echo '<td align=center>';
  49.                                 echo '<b>'.$new->day_of_week['data'].'</b><br>';
  50.                                 echo '<img src="http://www.google.com/' .$new->icon['data'] . '"/>';
  51.                                 echo '<small>'.$new->condition['data'].'</small>';
  52.                                 echo ''.$this->convert($new->low['data']).' &#8451;';
  53.                                 echo '|'.$this->convert($new->high['data']).' &#8451;';
  54.                         echo '</td>';                  
  55.                 }      
  56.                 echo "</tr></table>";
  57.         }
  58.        
  59.         public function convert($value, $unit = "C"){
  60.                 switch($unit){
  61.                         case "C":
  62.                                 return number_format(($value - 32)/1.8);
  63.                         break;
  64.                         case "F":
  65.                                 return round($value * 1.8 + 32);
  66.                         break;
  67.                         default:
  68.                                 return $value;
  69.                                 break;
  70.                 };
  71.         }      
  72. }
  73. ?>
  74.  



2. Kemudian buat script untuk menampilkan class tersebut

cuaca.php
CODE
  1.  
  2. <?php
  3. require_once('class_weather.php');
  4.  
  5. $weather = new weather();
  6. if (!empty($_GET['loc'])) {
  7.         $weather->location = $_GET['loc'];
  8. }
  9. $weather->get();
  10. if($weather->error){
  11.         die('We couldn't find your location.');
  12. }else{
  13.         echo '
  14.         <table border=0 cellspacing=0 cellpadding=3><tr>
  15.                 <td colspan=3>Prakiraan Cuaca Kota :'.ucwords($weather->location).'</td></tr>
  16.                 <tr><td><img src="http://www.google.com/' .$weather->current->icon['data'] . '" /></td>
  17.                 <td><h2>'.$weather->current->temp_c['data'].' &#8451;</h2></td>
  18.                 <td>'.$weather->current->condition['data'].'<br/>
  19.                 '.$weather->current->humidity['data'].'<br/>
  20.                 '.$weather->current->wind_condition['data'].'</td>
  21.         </tr></table>
  22.         ';
  23.         $weather->display();
  24. }
  25. ?>
  26.  


anda bisa mencobanya di localhost atau mengupload ke server anda lalu membukanya pada browser anda, jika tidak ada kesalahan anda akan mendapatkan hasil kurang lebih seperti ini



Untuk mencoba script yang saya buat anda bisa membuka di halaman berikut:

http://po3nx.web.id/index.php?section=cuaca

untuk melihat prakiraan cuaca di daerah lain anda dapat menambahkan variable loc pada url misalkan begini

http://po3nx.web.id/index.php?section=cuaca&loc=yogyakarta <== untuk melihat prakiraan cuaca daerah Yogyakarta

catatan: belum semua kota di Indonesia atau didunia ada dalam database, tetapi sudah hampir semua kota yang merupakan ibukota propinsi di Indonesia sudah bisa dilihat di database.

Selamat mencoba semoga bermanfaat

Terimakasih

sumber class: PHPClasses
>> Arsip Artikel <<



Comment
[Po3nX ]
@jw: untuk ganti bahasa, lihat di bagian :
$requestAddress = "http://www.google.com/ig/api?weather=".trim(urlencode($this->location))."&hl=en";

ganti hl=en menjadi hl=id

kalo untuk ganti icon harus dibuatkan select case dan dipasang di baris

echo '<img src="http://www.google.com/' .$new->icon['data'] . '"/>';

jadi ambil dulu nilai $new->icon['data'] setelah itu baru di select case atau bisa juga menggunakan if
10/11/11Gravatar
[jw ]
hmm.. saya gak bisa merubahnya mas... digimanain
displaynya... boleh minta contoh gak mas... hehehe
09/11/11Gravatar
[Po3nX ]
Bisa bos, tinggal classnya diedit, lihat di class dibagian public function display()
18/06/11Gravatar
[jw ]
mas kalau bahasanya pakai bahasa indonesia bisa gak ya???

terus kalau di ganti iconnya bisa juga gak ya... hehhe

bnyak nanya ya mas.... mkasi sebelumnya..

menambah ilmu saya
11/06/11Gravatar
[Po3nX ]
@Sulle : monggo silahkan dicoba, semoga bermanfaat, thanks kunjungannya
31/03/11Gravatar
[sulle baik ]
boleh coba ni bang, di website ane. !

makasih yah, udah berbagi
30/03/11Gravatar
[Po3nX ]
Yup, tentu bisa, cuman caranya agak berbeda, kita perlu membuat modul baru, dan menginstallnya d joomla, tentang bagaimana cara membuat modul di joomla bisa dilihat di url :
http://docs.joomla.org/How_to_create_a_module
27/04/10Gravatar
[Juliana ]
Mas, kalo script ini dipake di web joomla bisa ga ya? Apa caranya juga sama? Thanks jawabannya.. :-)
27/04/10Gravatar
[Po3nX ]
Wologh... Paman Gugel dari hongkong.. weekkekek.. peace man (Paman)..
02/03/10Gravatar
[Tamu ]
Ganaz ew si om, paman gugel aja bisa komen disini, wakakakakak., kacaw
27/02/10Gravatar
[Paman Gugel ]
Nice post :D
20/02/10Gravatar