根据经度和纬度返回地理位置 LocationAPi

View Code
publicclass LocationAPI
{
privatestaticstring GeoCodeUrl = ConfigurationManager.AppSettings["GeoCodeUrl"];
privatestaticstring GoogleGearUrl = ConfigurationManager.AppSettings["GoogleGearUrl"];
privatestaticstring UseGoogleReverse = ConfigurationManager.AppSettings["UseGoogleReverse"];

///<summary>
/// Initializes a new instance of the <see cref="LocationAPI"/> class.
///</summary>
public LocationAPI()
{

}

publicstaticstring GetAddressFromLL(string Lat, string Lng)
{

string url ="http://ws.geonames.org/findNearestAddress?lat="+ Lat +"&lng="+ Lng;
WebResponse response
=null;
Stream stream
=null;
StreamReader reader
=null;

try
{
HttpWebRequest request
= (HttpWebRequest)WebRequest.Create(url);
request.UserAgent
=@"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.40607; .NET CLR 1.1.4322)";
request.Timeout
=1;
response
= request.GetResponse();
stream
= response.GetResponseStream();
reader
=new StreamReader(stream, System.Text.Encoding.UTF8);
XmlDocument xDoc
=new XmlDocument();
xDoc.Load(stream);
XmlNode xStreet
= xDoc.SelectSingleNode("geonames/address/street");
XmlNode xStreetNumber
= xDoc.SelectSingleNode("geonames/address/streetNumber");
XmlNode xPlacename
= xDoc.SelectSingleNode("geonames/address/placename");
XmlNode xCountryCode
= xDoc.SelectSingleNode("geonames/address/countryCode");
string address = xStreet.InnerText +""+ xStreetNumber.InnerText +", "+ xPlacename.InnerText +", "+ xCountryCode.InnerText +"";
return address;

}
catch(Exception ex)
{
DAL.Log.Write(DateTime.Now.ToString()
+"\0"+ ex.Message.ToString() +"\r\n");
return"UnKnown";
}
finally
{
if (reader !=null) reader.Close();
if (stream !=null) stream.Close();
if (response !=null) response.Close();
}
}
}

posted on 2011-06-07 10:54  梁子se7en  阅读(251)  评论(0编辑  收藏  举报