我是靠谱客的博主 踏实金鱼,最近开发中收集的这篇文章主要介绍百度地图经纬度纠偏,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我们使用百度地图进行经纬度定位往往会发现地图呈现坐标与实际坐标不符。那是因为我国规定地图经纬度都要进行二次加密,如果要获取实际经纬度对应的百度地图经纬度坐标,需要调用百度地图提供的方法进行坐标转换。

代码如下


/// <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的值

最后

以上就是踏实金鱼为你收集整理的百度地图经纬度纠偏的全部内容,希望文章能够帮你解决百度地图经纬度纠偏所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部