Vamos a obtener al tiempo meteorológico haciendo uso tanto del buscador de ciudades como de nuestra posición actual utilizando el componente Location y la API de Yahoo weather.
Aspecto general de la aplicación:
A la Api de Yahoo no se le puede pasar como parámetro el nombre de la ciudad directamente por lo que hay que buscar el código de la misma denomidado woeid. Para ello se utiliza el siguiente código haciendo uso de geo.places:
campo 1: https://query.yahooapis.com/v1/public/yql?q=
campo 2: select name,woeid from geo.places where lang= "es" and text="
campo 3: TextBox.Text
campo 4: " limit 1
Notas:
Al indicar select name,woeid nos limita los campos de la respuesta a los que realmente necesitamos. Si indicamos select * la respuesta sería completa.
Con limit 1 obtenemos un solo resultado para simplificar el ejemplo.
Nos devuelve fichero en formato xml cuyo formato es el siguiente (para el municipio de Arona):
Para obtener el woeid hacemos uso del procedimiento exW. Una vez obtenido, formamos una nueva url esta vez solicitando las condiciones meteorológicas:
campo 1: http://weather.yahooapis.com/forecastrss?w=
campo 2: woeid
campo 3: &u=c
Nota: El campo c se utiliza para que el resultado obtenido sea en grados celsius (centígrados). Una f nos daría el resultado en grados fahrenheit.
El procedimiento exW "navega" por el fichero xml en busca del valor woeid
Como respuesta, obtenemos un fichero xml del tipo:
Luego, haciendo uso del procedimiento extString obtenemos los datos meteorológicos:
Tags:
Ciudad: city="
Temperatura: temp="
Humedad: humidity="
Imagen: img src="
Amanece: sunrise="
Anochece: sunset="
Visibilidad: visibility="
Viento: speed="
Este procedimiento obtiene los datos analizando el fichero xml en busca del valor que se encuentra entres dos string (open_tag y close_tag):
Para la velocidad del viento el procedimiento cambia un poco por el tag speed aparece en dos partes del fichero y a nosotros nos interesa la segunda entrada:
Con esto, obtenemos los datos meteorológicos de una ciudad determinada introduciendo el nombre de dicha ciudad.
Búsqueda de la posición Actual
Si queremos conocer las condiciones meteorológicas de nuestra ciudad, hacemos uso del sensor Location para averiguar nuestra posición actual para finalmente obtener el woeid a partir de la latitud y longitud obtenida. Primero tenemos que activar el sensor que podemos hacerlo con el GPS (por defecto) o utilizando la red 3G/WiFi (esta última opción es la recomendada en interiores) con ProvideName=network:
Cuando se detecta un cambio en Location, se ejecuta este método siguiente que hace uso de findlocation:
campo 1:
http://gws2.maps.yahoo.com/findlocation?pf=1&locale=en_US&offset=15&flags=&q=
campo 2: latitud
campo 3: ,
campo 4:longitud
campo 5: &gflags=R&start=0&count=100
Con esta información, obtenemos como en el caso anterior el parámetro woeid y volvemos a realizar las operaciones descritas anteriormente..
Descargas:
Fuentes:
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.