百度地图WGS4转换真实GPS及逆向转换
来源:互联网 发布:7z linux解压命令 编辑:程序博客网 时间:2024/05/22 02:21
http://hunray.iteye.com/blog/1404129
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=185177
最近项目中碰见并解决了一个的问题 (内牛满面啊...)
主要需求是这样的:
在百度地图上仍然展示百度地图的坐标,但是提交数据是要上传精确的gps坐标 (客户那边是用google地图做的但客户要求android客户端用百度地图...)
众所周知在我们的天朝GPS是不可能公开让所有人都知道的,所以百度google地图都会有一定的偏移量 ,只有加上偏移量之后 ,国家测绘地理信息什么协会,才会同意商用或者提供API接口
我们用百度地图时,默认获取的都是baidu09的百度坐标,如果想获取GPS就得转换了(当然也有别的办法,直接使用WGS坐标来定位,当然,显示的时候仍然要转换一下,转换方法下边有代码,自己参考)
昨天弄了一下午 今天仔细一行一行的调试 最终终于找到了这个bug 内牛满面啊。。。
没有文档上不起啊。。。
上代码
/**
*
*<font color="\"#ff0000\""> </font><font color="\"#ff00\"">特别是这里x一定要传lon,y值传lat 传反了后果自负(我就是在这里栽跟头的 谨记谨记)</font>
*/
String bmapBase64Encode =
"http://api.map.baidu.com/ag/coord/convert?from=0&to=4<font color="
\"#ff0000\"
">&x=%1$s&y=%2$s"
</font>;
/**
* 转换百度地图坐标
* @param baiduLat
* 百度地图坐标 纬度
* @param baiduLon
* 百度地图坐标 经度
* @throws IOException
* @throws HWNetException
* @throws JSONException
*/
private
void
tran(
double
baiduLat,
double
baiduLon)
throws
IOException,
HWNetException, JSONException {
//就一个普通个的url请求封装成Client而已
AndroidClient client =
new
AndroidClient();
//获取请求后数据
String json = client.doGetWithString(String.format(bmapBase64Encode,String.valueOf(baiduLon),String.valueOf(baiduLat)));
//得到JSON对象
JSONObject object =
new
JSONObject(json);
System.out.println(object);
Double lon1 = Double.parseDouble(
new
String(Base64.decodeBase64(object.getString(
"x"
).getBytes())));
Double lat1 = Double.parseDouble(
new
String(Base64.decodeBase64(object.getString(
"y"
).getBytes())));
System.out.println(
"转换出来的百度坐标经度:"
+lon1+
"纬度:"
+lat1);
//这里的就是GPS坐标 经过下面算法转换 基本上合真实的GPS坐标相差无几
super
.gpsLat = baiduLat*
2
-lat1;
super
.gpsLon = baiduLon*
2
-lon1;
System.out.println(
"算法转算后的百度坐标经度:"
+gpsLon+
"纬度:"
+gpsLat);
}
知道GPS(WGS84)坐标转换百度地图坐标只需一句话
CoordinateConvert.bundleDecode(CoordinateConvert.fromWgs84ToBaidu(
new
GeoPoint((
int
)(gpsLat*1E6), (
int
)(gpsLon*1E6))))
红色部分 血的教训啊。。。
mark一下 分享一下 顺便总结一下 ...
——————————————————————————————
百度地图API中,有GPS坐标转百度坐标的功能
http://dev.baidu.com/wiki/static/map/API/examples/?v=1.2&0_6#0&6
http接口是:http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=116.397428&y=39.90923&callback=BMap.Convertor.cbk_7594
返回结果坐标是通过base64加密的。
这个转换算法百度是不会公开的,而且百度也没有提供百度坐标转成GPS坐标功能,这里我用了取巧的办法。
百度坐标和GPS坐标转换在很近的距离时偏差非常接近。
假设你有百度坐标:x1=116.397428,y1=39.90923
把这个坐标当成GPS坐标,通过接口获得他的百度坐标:x2=116.41004950566,y2=39.916979519873
通过计算就可以得到GPS的坐标:
x = 2*x1-x2,y = 2*y1-y2
x=116.38480649434001
y=39.901480480127
在http://dev.baidu.com/wiki/static/map/API/examples/?v=1.2&0_6#0&6 将此坐标输入GPS数据项中得到的结果是:116.39743826208,39.909194650838
- 百度地图WGS4转换真实GPS及逆向转换
- 百度地图WGS4转换真实GPS及逆向转换
- 百度地图GPS坐标转换方法
- GPS坐标转换为百度地图坐标
- Google地图百度地图GPS经纬度偏移转换(JAVA)
- Google地图百度地图GPS经纬度偏移转换(JAVA)
- Google地图百度地图GPS经纬度偏移转换(JAVA)
- Google地图百度地图GPS经纬度偏移转换(JAVA)
- android 百度地图 gps数据转换百度经纬度
- GPS经纬度及谷歌地图坐标转换为百度地图坐标,解决地图显示经纬度的偏移问题
- BMap百度地图坐标转换为GPS坐标
- 通过Java将GPS坐标转换为百度地图坐标
- GPS坐标 转换偏移 成百度地图 坐标
- BMap百度地图坐标转换为GPS坐标
- gps数据转换为在百度地图下的坐标
- GPS转百度,百度近似转换GPS
- 百度地图坐标转换(gps google 百度坐标相互转换)
- 手机端使用H5百度地图定位,并将GPS转换百度地图坐标
- 9非连续内存区
- 读《神一样的产品经理》
- Oracle 函数使用
- 10 内存描述符
- SYSTEM SYSAUX 表空间恢复
- 百度地图WGS4转换真实GPS及逆向转换
- delphi 监控系统文件操作
- Qt 对话框的使用
- android之滑动选择切换字符
- C#中struct和C中的struct的一个区别
- 桃花庵--程序员版
- TCP listen() Backlog 参数详解
- Java 程序员应该了解的 10 个面向对象设计原则
- MSCHART 柱状图实例