C#调用Geocoding API进行地理编码与逆编码

时间:2023-03-26 22:26:38

使用C#调用Geocoding API来将地址转为经纬度,或者将经纬度转变为具体的地址。

Geocoding API的详细介绍参见:http://developer.baidu.com/map/webservice-geocoding.htm

     地理编码示例:

     网页调用:

C#调用Geocoding API进行地理编码与逆编码

C#代码实现:

 /// <summary>
/// 地址编码
/// </summary>
/// <param name="ak">百度密钥</param>
/// <param name="address">详细地址</param>
/// <param name="city">城市</param>
/// <returns></returns>
public string GeoEncoding(string ak, string address,string city)
{
string json = ",";
try
{
WebClient client = new WebClient();
client.Encoding = UTF8Encoding.UTF8;
string url = String.Format("http://api.map.baidu.com/geocoder/v2/?ak={0}&address={1}&city={2}&output=json", ak, address, city); //将返回的json数据转为JSON对象
JObject jo = ((JObject)JsonConvert.DeserializeObject(client.DownloadString(url)));
string status = jo["status"].ToString();
if (status == "")
{
//正常返回
json = jo["result"]["location"]["lat"].ToString() + "," + jo["result"]["location"]["lng"].ToString();
}
}
catch(Exception ex)
{
//异常处理
}
return json;
}

逆地址编码示例:

网页调用:

C#调用Geocoding API进行地理编码与逆编码

C#代码实现:

 /// <summary>
/// 逆地址编码
/// </summary>
/// <param name="ak">百度密钥</param>
/// <param name="longitude">经度</param>
/// <param name="latitude">纬度</param>
/// <returns></returns>
public string GeoDecoding(string ak, string longitude, string latitude)
{
string json = "";
try
{
WebClient client = new WebClient();
client.Encoding = UTF8Encoding.UTF8;
string url = String.Format("http://api.map.baidu.com/geocoder/v2/?ak={0}&location={1},{2}&output=json", ak, longitude, latitude); //将返回的json数据转为JSON对象
JObject jo = ((JObject)JsonConvert.DeserializeObject(client.DownloadString(url)));
string status = jo["status"].ToString();
if (status == "")
{
//正常返回
json = jo["result"]["formatted_address"].ToString() ;
}
}
catch (Exception ex)
{
//异常处理
}
return json;
}