La llamada a Google Weather es una simple llamada a una URL pasando el parámetro de ciudad, por ejemplo http://www.google.com/ig/api?weather=Madrid devolviéndonos un XML (podemos probar a poner esta dirección en un navegador web para hacernos una idea).
El siguiente paso sería procesar el XML devuelto y mostrar los datos que nos interesen. Por ejemplo vamos a mostrar un código en PHP para el API de Google Weather usando la librería SimpleXML:
<?php
// Proceso
$ciudad = "Barcelona";
$xml = simplexml_load_file("http://www.google.com/ig/api?weather=".$ciudad);
if($xml===false) { // Fallo al contactar con Google
return null;
}
$current = $xml->xpath("/xml_api_reply/weather/current_conditions");
if(count($current)==0) { // Ciudad errónea
return null;
}
$temperatura_centigrados = $current[0]->temp_c["data"];
$humedad = $current[0]->humidity["data"];
$condiciones = $current[0]->condition["data"];
$icono = $current[0]->icon["data"];
// Vista
echo 'Temperatura: '.$temperatura_centigrados.'°<br/>';
echo $humedad.'<br/>';
echo 'Condiciones: '.$condiciones.'<br/>';
echo '<img src="http://www.google.com/'.$icono.'" alt="'.$condiciones.'" title="'.$condiciones.'"/>"';
?>
Por último, para hacer nuestra aplicación resistente a fallos, recomendamos ejecutar este script desde una llamada AJAX, ya que si Google fallara o tardara en responder, nuestra página tardaría o fallaría al servirse.

10 comentarios:
Gracias mil.
Gracias y muy bueno el aporte, es excelente.
Exitos con tu blog!!
PHP 4.x no tiene incluida la librería SimpleXML, por lo que deberás hacerlo a la vieja usanza: con XML Parser.
Un ejemplo orientativo lo puedes encontrar en esta web http://www.tierra0.com/2007/08/01/de-xml-a-array-con-php4/
Por otro lado Nonaoco, simplemente copia el código y pégalo en un archivo .php y estará funcionando.
Supongo que la diferencia está en el USER AGENT que le envías desde el fopen que PHP hace, así que o envías una cabecera especificando el idioma (por eso en el navegador aparece en español y desde PHP aparece en inglés) o traduces todos los textos de inglés y substituyes el texto por el correspondiente.
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,'http://www.google.com/ig/api?weather=Cartagena');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Accept-Language: es-es,es;q=0.8,en;q=0.5,en-us;q=0.3','Content-Type: text/xml;charset=utf-8'));
$raw_xml = curl_exec($ch);
curl_close($ch);
$xml = simplexml_load_string(utf8_encode($raw_xml));