我们使用百度地图进行经纬度定位往往会发现地图呈现坐标与实际坐标不符。那是因为我国规定地图经纬度都要进行二次加密,如果要获取实际经纬度对应的百度地图经纬度坐标,需要调用百度地图提供的方法进行坐标转换。
代码如下
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55/// <summary> /// 转换为百度经纬度 /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <returns></returns> public static string ChangeToBD(string x, string y) { String path = "http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=" + x + "+&y=" + y + "&callback=BMap.Convertor.cbk_7594"; string res = SendDataByGET(path); if (res.IndexOf("(") > 0 && res.IndexOf(")") > 0) { int sint = res.IndexOf("(") + 1; int eint = res.IndexOf(")"); int ls = res.Length; String str = res.Substring(sint, eint - sint); int errint = res.IndexOf("error") + 7; int enderr = res.IndexOf("error") + 8; String err = res.Substring(errint, 1); if ("0".Equals(err)) { int sx = str.IndexOf(","x":"") + 6; int sy = str.IndexOf("","y":""); int endy = str.IndexOf(""}"); int sl = str.Length; string xp = str.Substring(sx, sy - sx); string yp = str.Substring(sy + 7, endy - sy - 7); byte[] outputb = Convert.FromBase64String(xp); string XStr = Encoding.Default.GetString(outputb); outputb = Convert.FromBase64String(yp); string YStr = Encoding.Default.GetString(outputb); return XStr + "," + YStr; } } return string.Empty; } /// <summary> /// 通过GET方式发送数据 /// </summary> /// <param name="Url"></param> /// <returns></returns> public static string SendDataByGET(string Url) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); request.Method = "GET"; request.ContentType = "text/html;charset=UTF-8"; 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(); return retString; }
代码中最关键的部分是
复制代码
1String path = "http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=" + x + "+&y=" + y + "&callback=BMap.Convertor.cbk_7594";
这是百度地图提供的接口,只需要提供x,y参数,就能获取正确的百度地图经纬度
在浏览器中输入网址http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=120&y=30&callback=BMap.Convertor.cbk_7594
得到结果
error表示0个错误
x为转换后的百度地图经度
y为转换后的百度地图纬度
注:无论使用使用什么语言编辑,代码核心都是这个网址,其他代码都是为了从结果字符串中获取x,y的值
最后
以上就是踏实金鱼最近收集整理的关于百度地图经纬度纠偏的全部内容,更多相关百度地图经纬度纠偏内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复