百度地图经纬度纠偏
来源:互联网 发布:韩寒新作品2018 知乎 编辑:程序博客网 时间:2024/04/28 18:52
我们使用百度地图进行经纬度定位往往会发现地图呈现坐标与实际坐标不符。那是因为我国规定地图经纬度都要进行二次加密,如果要获取实际经纬度对应的百度地图经纬度坐标,需要调用百度地图提供的方法进行坐标转换。
代码如下
/// <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; }
代码中最关键的部分是
String 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的值
阅读全文
1 0
- 百度地图经纬度纠偏
- 百度地图经纬度纠偏数据库
- 百度地图经纬度Web纠偏
- 【JAVA】百度地图经纬度纠偏
- 民用地图经纬度纠偏-高德系地图纠偏
- 民用地图经纬度纠偏-高德系地图纠偏
- 民用地图经纬度纠偏-高德系地图纠偏
- 高德地图经纬度纠偏
- 百度地图纠偏
- 百度地图位置纠偏
- 百度地图+Marker纠偏
- 百度地图定位纠偏
- 百度 Google 高德 全国 地图 GPS纠偏数据 偏移数据 火星坐标修正方案(经纬度纠偏)
- 关于百度地图的坐标纠偏
- 获取百度地图经纬度
- 百度地图定位经纬度
- 百度地图----解析经纬度
- 地图纠偏
- 极限编程实践
- jquery获取select中的option的text值
- 阿哈磊的挑战7-10
- Arcgis for Android 处理点击地图触发地图平移监听的问题
- 使用反射举例
- 百度地图经纬度纠偏
- cmake实用指南(一):基础命令的使用
- Git&GitHub
- hadoop-2.7 在windows环境下安装
- Android,debug正常运行,用其他途径打开程序就会崩溃,且没报异常!
- haut 1280: 诡异的迷宫(多次bfs)
- POI对docx模板进行文字、图片替换
- Docker 简介
- ngrx/store