C#:批量获取百度地图经纬度与地址对应方法

admin2023-11-17电脑技术浏览:149

C#百度地图根据地址批量获取经纬度方法以及根据经纬度批量获取地址方法如下:

一、在开发百度地图相关功能时,批量上传企业信息时,需要将地址批量转换为百度地图的经纬度

具体方法如下:

/// <summary>

/// 根据地址获取经纬度 可用

/// </summary>

/// <param name="address"></param>

/// <returns></returns>

public static string Get_lng_lat_new(string address)

{

string ak = "你申请百度地图开放平台的AK值";

string Url = @"http://api.map.baidu.com/geocoding/v3/?address=" + address + "&output=json&ak="+ak+"&callback = showLocation";

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);

request.KeepAlive = false;

request.Method = "GET";

request.ContentType = "application/json";

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

Stream myResponseStream = response.GetResponseStream();

StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));

string retString = myStreamReader.ReadToEnd();

myStreamReader.Close();

myResponseStream.Close();

response.Close();

request.Abort();

// txtLocation.Text = retString;

JObject obj_RawData = (JObject)(JsonConvert.DeserializeObject(retString));

JObject obj_Result = (JObject)(JsonConvert.DeserializeObject(obj_RawData["result"].ToString()));

JObject obj_Loaction = (JObject)(JsonConvert.DeserializeObject(obj_Result["location"].ToString()));

string lng = obj_Loaction["lng"].ToString(); //经度值

string lat = obj_Loaction["lat"].ToString(); //纬度值

return lng+","+lat; //经度+纬度

}

二、需求2:在开发百度地图相关功能时,批量上传企业信息时,需要将百度地图的经纬度批量转换为企业的地址,方法如下:

/// <summary>

/// 根据经纬度 得到地址 可用

/// </summary>

/// <param name="lng"></param>

/// <param name="lat"></param>

/// <returns></returns>

public static string Get_adderss(string lng,string lat)

{

string ak = "你申请百度地图开放平台的AK值";

// string Url = @"http://api.map.baidu.com/geocoding/v3/?address=" + address + "&output=json&ak=" + ak + "&callback = showLocation";

string Url= @"http://api.map.baidu.com/reverse_geocoding/v3/?ak="+ ak+"&output=json&coordtype=bd09ll&location=" + lat + "," + lng;

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);

request = (HttpWebRequest)WebRequest.Create(Url);

request.KeepAlive = false;

request.Method = "GET";

request.ContentType = "application/json";

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

Stream myResponseStream = response.GetResponseStream();

StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));

string retString = myStreamReader.ReadToEnd();

myStreamReader.Close();

myResponseStream.Close();

response.Close();

request.Abort();

return retString;

}

三、前端调取方式 :

1、Response.Write( GetInterface.Get_lng_lat_new("北京市东城区王家园胡同16号"));

返回值: 116.445183516346,39.9366107368178,可以根据些方法批量将地址转换为经纬度写入数据库中。

2、Response.Write(GetInterface.Get_adderss("116.445183516346", "39.9366107368178"));

返回json串:

{"status":0,"result":{"location":{"lng":116.44518351634595,"lat":39.936610812121127},"formatted_address":"北京市东城区王家园胡同12号","business":"朝阳门,东直门,东四十条","addressComponent":{"country":"中国","country_code":0,"country_code_iso":"CHN","country_code_iso2":"CN","province":"北京市","city":"北京市","city_level":2,"district":"东城区","town":"","town_code":"","adcode":"110101","street":"王家园胡同","street_number":"12号","direction":"附近","distance":"0"},"pois":[],"roads":[],"poiRegions":[],"sematic_description":"","cityCode":131}}

自己根据解析json串获得实际地址。

以上二种方法是本人在开发百度地图功能时依据百度开放平台自己写的,亲测可用,希望对相关开发的朋友有所帮助 ,如有问题可以关注并留言,谢谢!

热门文章

    10,000 前的相关文章推荐