Vamos a crear una aplicación sencilla que utilice los dos servicios web que acabas de ver de Bing Maps
y Yahoo! Weather
. Se trata simplemente de ver cómo se pueden utilizar desde PHP
. Al igual que en Yahoo! Weather
, Bing Maps
ofrece información de como recuperar los datos en PHP
, esa información la tienes disponible en el enlace siguiente: Bing Maps
y PHP
.

El formulario está dividido en dos zonas. En la superior, el usuario podrá introducir unas coordenadas (latitud y longitud) y en la inferior los datos de una dirección y el tiempo en la misma. Se trata de utilizar los dos botones del formulario para realizar consultas a ambos servicios, de tal forma que:
- Al utilizar el botón "
Ver dirección
", se realiza una consulta inversa al servicio "Find a Location by Point" deBing Maps
y se cubren los datos de la zona inferior del formulario relativos a Dirección Ciudad y País con la respuesta obtenida. - Al pulsar sobre el botón "
Ver Tiempo
" se lanza una petición aYahoo! Weather
y se cubren los campos de Tiempo, Temperatura y Humedad.
Para realizar las llamadas mediante Ajax
utilizarás la librería Xajax
, vista en la unidad anterior. En ambas peticiones hemos recuperado los datos en formato JSON
, para eso hemos utilizado la función PHP
: "json_decode($resp, true)"
(el parámetro "true"
es para convertir los datos JSON
en un array asociativo)
La función que se encarga de realizar la llamada a Yahoo! Weather
incluye el siguiente código:
function getTiempo($la, $lo)
{
$resp = new xajaxResponse();
if (!validar($la, $lo)) {
$resp->setReturnValue(false);
return $resp;
}
$datos = new Weather($la, $lo);
$tiempo = $datos->getTiempo();
$temp = $tiempo['condition']['temperature'];
$humedad = $tiempo['atmosphere']['humidity'];
$tiem = $tiempo['condition']['text'];
$resp->assign('tie', 'value', $tiem);
$resp->assign('tem', 'value', $temp . "º");
$resp->assign('hum', 'value', $humedad . "%");
$resp->setReturnValue(true);
return $resp;
}
Y la que utiliza Bing Maps
para obtener la dirección de unas coordenadas (también en formato JSON
):
function getLocalizacion($la, $lo)
{
$resp = new xajaxResponse();
if (!validar($la, $lo)) {
$resp->setReturnValue(false);
return $resp;
}
$datos = new Weather($la, $lo);
$ubicacion = $datos->getLocalizacion();
$dir = $ubicacion['addressLine'];
$ciudad = $ubicacion['locality'];
$pais = $ubicacion['countryRegion'];
$resp->assign('dir', 'value', $dir);
$resp->assign('ciu', 'value', $ciudad);
$resp->assign('pai', 'value', $pais);
$resp->setReturnValue(true);
return $resp;
}
Ambas funciones se apoyan en la clase Weahter
(que tendrás que implementar) y sus métodos que son los que se encargan de recuperar en formato JSON
los datos pedidos. Para esta clase te puedes ayudar en la documentación de como trabajar con PHP
en Bing Maps
y Yahoo! Weather
.
Examina el código completo de la aplicación que se incluye en el siguiente fichero. Asegúrate de ajustar la ruta a la librería Xajax
y de configurar tus propias credenciales para que todo funcione: