El WOEID es útil para obtener información como por ejemplo el clima.
using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace F.Phone.Maps.Yahoo
{
/// <summary>
///
/// </summary>
public class WOEIDArgs: EventArgs {
public string WOEID
{
get;
set;
}
}
/// <summary>
///
/// </summary>
public class GeoCode
{
public const string FindPlaceURL = "http://where.yahooapis.com/geocode?q={0},{1}&gflags=R&appid={2}";
public const string WOEIDUrl = "http://where.yahooapis.com/v1/places.q('{0}')?appid={1}";
public const string AppKey = "YOUR-APP-KEY--";
WebClient proxy;
WebClient Proxy {
get {
if (proxy == null)
{
proxy = new WebClient();
}
return proxy;
}
}
public bool IsInError { get; set; }
public string ErrorDescription { get; set; }
public event EventHandler<WOEIDArgs> WOEIDFound;
public void GetWOEID(double latitude, double longitude)
{
try
{
IsInError = false;
Proxy.DownloadStringCompleted += new DownloadStringCompletedEventHandler(WOEID_DownloadStringCompleted);
Proxy.DownloadStringAsync(new Uri(
String.Format(FindPlaceURL , latitude.ToString ().Replace (',','.'), longitude.ToString ().Replace (',','.'), AppKey)
));
}
catch (Exception ex)
{
IsInError = true;
ErrorDescription = ex.Message;
}
}
/// <summary>
///
/// </summary>
/// <param name="placename"></param>
public void GetWOEID(string placename) {
try{
IsInError = false ;
Proxy.DownloadStringCompleted += new DownloadStringCompletedEventHandler(WOEID_DownloadStringCompleted);
Proxy.DownloadStringAsync(new Uri(
String.Format (WOEIDUrl, placename, AppKey )
));
}
catch (Exception ex){
IsInError = true ;
ErrorDescription = ex.Message ;
}
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void WOEID_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
try
{
if (WOEIDFound != null)
{
string text =
System.Text.RegularExpressions.Regex.Match(e.Result, @"\<woeid\>\s*(?<woeid>[0-9]+)\s*</woeid>").Groups["woeid"].ToString();
WOEIDArgs e1 = new WOEIDArgs();
e1.WOEID = text;
WOEIDFound(sender, e1);
}
}
catch (Exception ex)
{
IsInError = true;
ErrorDescription = ex.Message;
}
finally {
proxy = null;
}
}
}
}