経度と緯度に応じて結果を表示する気象情報を実装したいと考えています。
私のアプリは GPS から座標を取得しているので、それらを取得することは問題ではありません。唯一のことは、私に最も近い都市の天気情報を表示したいということと、そこに天気情報があることです。
アイデアと解決策を教えてください。
Google Weather API についてどう思いますか?
最も近いものを検索する方法と、このコードに緯度と経度を与える方法。
public static void GoogleWeather(string location)
{
HttpWebRequest GoogleRequest;
HttpWebResponse GoogleResponse = null;
XmlDocument GoogleXMLdoc = null;
try
{
GoogleRequest = (HttpWebRequest)WebRequest.Create("http://www.google.com/ig/api?weather=" + string.Format(location));
GoogleResponse = (HttpWebResponse)GoogleRequest.GetResponse();
GoogleXMLdoc = new XmlDocument();
GoogleXMLdoc.Load(GoogleResponse.GetResponseStream());
XmlNode root = GoogleXMLdoc.DocumentElement;
XmlNodeList nodeList1 = root.SelectNodes("weather/forecast_information");
HttpContext.Current.Response.Write("<b>City : " + nodeList1.Item(0).SelectSingleNode("city").Attributes["data"].InnerText + "</b>");
XmlNodeList nodeList = root.SelectNodes("weather/current_conditions");
HttpContext.Current.Response.Write("
");
HttpContext.Current.Response.Write("
<table class="bordered" cellpadding="5">
<tbody><tr><td><b><big><nobr>" + nodeList.Item(0).SelectSingleNode("temp_c").Attributes["data"].InnerText + " °C | " + nodeList.Item(0).SelectSingleNode("temp_f").Attributes["data"].InnerText + " °F</nobr></big></b>");
HttpContext.Current.Response.Write("<b>Current:</b> " + nodeList.Item(0).SelectSingleNode("condition").Attributes["data"].InnerText + "");
HttpContext.Current.Response.Write("" + nodeList.Item(0).SelectSingleNode("wind_condition").Attributes["data"].InnerText + "");
HttpContext.Current.Response.Write(nodeList.Item(0).SelectSingleNode("humidity").Attributes["data"].InnerText);
nodeList = root.SelectNodes("descendant::weather/forecast_conditions");
foreach (XmlNode nod in nodeList)
{
HttpContext.Current.Response.Write("</td>
<td align="center">" + nod.SelectSingleNode("day_of_week").Attributes["data"].InnerText+ "");
HttpContext.Current.Response.Write("<img src="http://www.google.com" + nod.SelectSingleNode("icon").Attributes["data"].InnerText + "" alt="" + nod.SelectSingleNode("condition").Attributes["data"].InnerText + "">");
HttpContext.Current.Response.Write(nod.SelectSingleNode("low").Attributes["data"].InnerText + "°F | ");
HttpContext.Current.Response.Write(nod.SelectSingleNode("high").Attributes["data"].InnerText + "°F");
}
HttpContext.Current.Response.Write("</td>
</tr>
</tbody></table>
");
}
catch (System.Exception ex)
{
HttpContext.Current.Response.Write(ex.Message);
}
finally
{
GoogleResponse.Close();
}
}