地图经度纬度偏移解决

1、百度地图坐标转换接口

先前博客上介绍的 百度地图API经纬度转换接口 ,支持所有坐标系之间的互转,但是目前此借口已经不能再使用了。非常的可惜,取而代之的是百度的另外一个接口:http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude

其中

  • from: 来源坐标系 (0表示原始GPS坐标,2表示Google坐标)
  • to: 转换后的坐标 (4就是百度自己啦,好像这个必须是4才行)
  • x: 精度
  • y: 纬度

返回的结果是一个json字符串: {“error”:0,”x”:”MTIxLjUwMDIyODIxNDk2″,”y”:”MzEuMjM1ODUwMjYwMTE3″}

  • error:是结果是否出错标志位,”0″表示OK
  • x: 百度坐标系的精度(Base64加密)
  • y: 百度坐标系的纬度(Base64加密)

2、百度地图API(iOS版)坐标转换服务

作用:将其他坐标系转换到百度坐标系

文件:BMKGeometry.h

接口说明:

  • BMKBaiduCoorForWgs84() 从gps坐标系或mapbar坐标系转换到百度坐标系,返回结果为经过Base64加密之后字符串。
  • BMKBaiduCoorForGcj() 从google坐标系、51地图坐标系、mapcabc坐标系转换到百度坐标系(51地图坐标需要先除10000),返回结果为经过Base64加密之后的字符串。
  • BMKCoorDictionaryDecode() base64加密后的坐标字典解密函数。

3、Google 中国地图偏移接口

经确认,目前此接口(http://ditu.google.cn/maps/vp?spn=0.0,0.0&z=18&vp=39.111195,117.148067)返回的内容已经改变,所以已不可用。

4、搜狗地图转换接口

作用:将google坐标和百度坐标转换为搜狗坐标的服务。

详细使用方法,请参照: http://map.sogou.com/api/documentation/javascript/api2.5/interface_translate.html

5、地球坐标转化成火星坐标

按理,只要使用国家提供的保密插件就可以将地球坐标转化为火星坐标。关于加密模块可能我们接触不到,但是网上给坐标加密的算法确实可以找到: https://on4wp7.codeplex.com/SourceControl/changeset/view/21483#353936

6、火星坐标到地球坐标

由于上面的加密算法是不可逆的。这个基本上是无解的。不然这个也不会成为国家机密了!

7、百度坐标与火星坐标的互换

算法代码如下,其中  bd_encrypt  将 GCJ-02 坐标转换成 BD-09 坐标,  bd_decrypt  反之。

#include <math.h>

const double x_pi = 3.14159265358979324 * 3000.0 / 180.0;

void bd_encrypt(double gg_lat, double gg_lon, double &bd_lat, double &bd_lon)
{
    double x = gg_lon, y = gg_lat;
    double z = sqrt(x * x + y * y) + 0.00002 * sin(y * x_pi);
    double theta = atan2(y, x) + 0.000003 * cos(x * x_pi);
    bd_lon = z * cos(theta) + 0.0065;
    bd_lat = z * sin(theta) + 0.006;
}

void bd_decrypt(double bd_lat, double bd_lon, double &gg_lat, double &gg_lon)
{
    double x = bd_lon - 0.0065, y = bd_lat - 0.006;
    double z = sqrt(x * x + y * y) - 0.00002 * sin(y * x_pi);
    double theta = atan2(y, x) - 0.000003 * cos(x * x_pi);
    gg_lon = z * cos(theta);
    gg_lat = z * sin(theta);
}

转载于:https://my.oschina.net/u/3486497/blog/1518415

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值