Mapbar经纬坐标偏移的加/解密算法

具本人研究所知,Mapbar地图的成图算法并不难懂,并且它的地图成图算法没有进行加密(效果就是整个地图有一定的偏移,实际上它的成图是准确的),由此可想而知,它的坐标必定也未加密!

那么为什么我用真实的经纬坐标在Mapbar上标注的时候,会有明显的偏移呢?

在我们应用Mapbar开发一些应用的时候,我们所看到的或者是获取到的经纬度坐标其实都不是真正的地理坐标,而是经过Mapbar加密以后的坐标,所以对于外来的坐标Mapbar并不感冒。

在Mapbar的Api中,它会对传入的坐标进行一次解密(会获得真实的经纬度坐标),然后在Api的核心成图函数里就使用这个真实的坐标绘制用户可见的地图,而我们通过API获取的Mapbar坐标都是加密以后的坐标。

综上,如果你传给了Mapbar一个真实的坐标,因为它会对所有传入的坐标进行一次解密,因为我们传的本来就是真实的坐标,被它这么一解密反而就不真实了,于是这个不真实的坐标在后面成图中以及标注点上就有了偏移。

废话太多了,直接看代码吧!

经纬度加密算法如下:(PHP版)

/**
 * 将真实地理坐标加密为Mapbar经纬度坐标
 *
 * @param $x 经度值
 * @param $y 维度值
 * @returns array
 */
function coordOffsetEncrypt($x,$y){
    $x = floatval($x)*100000%36000000;
    $y = floatval($y)*100000%36000000;

    $_X = intval(((cos($y/100000))*($x/18000))+((sin($x/100000))*($y/9000))+$x);
    $_Y = intval(((sin($y/100000))*($x/18000))+((cos($x/100000))*($y/9000))+$y);

    return array($_X/100000.0,$_Y/100000.0);
}

经纬坐标加密算法(Javascript版)

/**
 * 将真实地理坐标加密为Mapbar经纬度坐标
 *
 * @param x 经度值
 * @param y 维度值
 * @returns [x,y]
 */
function coordOffsetEncrypt(x, y) {
    var x = parseFloat(x) * 100000 % 36000000;
    var y = parseFloat(y) * 100000 % 36000000;

    var _x = parseFloat(((Math.cos(y / 100000)) * (x / 18000)) + ((Math.sin(x / 100000)) * (y / 9000)) + x);
    var _y = parseFloat(((Math.sin(y / 100000)) * (x / 18000)) + ((Math.cos(x / 100000))*(y/9000))+y);

    return [_x / 100000.0, _y / 100000.0];
}

经纬度坐标解密算法(PHP版)

/**
 * 将Mapbar经纬坐标解密为真实地理坐标
 *
 * @param $x 经度值
 * @param $y 维度值
 * @returns array
 */
function croodOffsetDecrypt($x,$y){
    $x = floatval($x)*100000%36000000;
    $y = floatval($y)*100000%36000000;

    $x1 = intval(-(((cos($y/100000))*($x/18000))+((sin($x/100000))*($y/9000)))+$x);
    $y1 = intval(-(((sin($y/100000))*($x/18000))+((cos($x/100000))*($y/9000)))+$y);

    $x2 = intval(-(((cos($y1/100000))*($x1/18000))+((sin($x1/100000))*($y1/9000)))+$x+(($x>0)?1:-1));
    $y2 = intval(-(((sin($y1/100000))*($x1/18000))+((cos($x1/100000))*($y1/9000)))+$y+(($y>0)?1:-1));

    return array($x2/100000.0,$y2/100000.0);
}

经纬度坐标解密算法(Javascript版)

/**
 * 将Mapbar经纬坐标解密为真实地理坐标
 *
 * @param x 经度值
 * @param y 维度值
 * @returns [x,y]
 */
function croodOffsetDecrypt(x, y){
    var x = parseFloat(x) * 100000 % 36000000;
    var y = parseFloat(y) * 100000 % 36000000;

    var x1 = parseInt(-(((Math.cos(y / 100000)) * (x / 18000)) + ((Math.sin(x / 100000)) * (y / 9000))) + x);
    var y1 = parseInt(-(((Math.sin(y / 100000)) * (x / 18000)) + ((Math.cos(x / 100000)) * (y / 9000))) + y);

    var x2 = parseInt(-(((Math.cos(y1 / 100000)) * (x1 / 18000)) + ((Math.sin(x1 / 100000)) * (y1 / 9000))) + x + ((x > 0) ? 1 : -1));
    var y2 = parseInt(-(((Math.sin(y1 / 100000))  *(x1 / 18000)) + ((Math.cos(x1 / 100000)) * (y1 / 9000))) + y + ((y > 0) ? 1 : -1));

    return [x2 / 100000.0, y2 / 100000.0];
}

演示

这篇文章目前有114条评论。

  1. yhostc CHINA Internet Explorer Windows 2011-03-25 10:19

    老兄,你的能力很好! (胜利)

    沙发王 !
  2. YTERE Internet Explorer Windows 2011-03-28 00:43

    老兄,你的能力很好!

    板凳党 !
  3. GIS CHINA Internet Explorer Windows 2011-03-28 15:43

    老兄,你的能力很好!

    地板砖 !
    • admin CHINA Mozilla Firefox Ubuntu Linux 2011-03-28 20:50

      大哥不要灌水,灌水是看不到答案滴。

    • 张虎 CHINA Mozilla Firefox Windows 2011-05-09 17:16

      想看看解密的方法

  4. Grass CHINA Internet Explorer Windows 2011-03-30 17:02

    老兄,你的能力很好!

    4 #
  5. 刘燕 CHINA Google Chrome Windows 2011-03-31 17:23

    楼主很了解地图的知识啊 赞!

    5 #
  6. leavingme CHINA Internet Explorer Windows 2011-03-31 19:52

    哈哈,解密还要评论哇~

    6 #
    • admin CHINA Mozilla Firefox Ubuntu Linux 2011-04-02 07:40

      想看看有多少人想知道答案。

  7. cv CHINA Internet Explorer Windows 2011-04-11 11:03

    hi kankan

    7 #
  8. rocky CHINA Google Chrome Windows 2011-04-13 14:36

    研究下

    8 #
  9. william CHINA Internet Explorer Windows 2011-04-13 16:58

    我按照demo的地址连接测试一下,发现跟google地图定位仍然有偏差,不知是不是我的js解密有错误(网上的js解密方法)

    9 #
    • admin CHINA Mozilla Firefox Windows 2011-04-13 19:52

      我的这个不是mapbar的吗,又不是谷歌的。

      • william CHINA Internet Explorer Windows 2011-04-14 10:07

        我的意思是:将Mapbar经纬度坐标转换为真实地理经纬度坐标后,将真实的地理经纬度换成google的地图发现有偏差。google不是真实的地理经纬度坐标吗?

        • crossyou CHINA Mozilla Firefox Ubuntu Linux 2011-04-14 10:12

          谷歌的应该不是真实的吧,据说以前是,来到中国就不是了,你懂的。

        • crossyou CHINA Mozilla Firefox Ubuntu Linux 2011-04-14 10:13

          你得需要知道谷歌地图的加解密算法

  10. 走走 CHINA Internet Explorer Windows 2011-04-14 12:58

    想看看解密的方法

    10 #
  11. zhangwenjin CHINA Internet Explorer Windows 2011-04-15 00:07

    11 #
  12. am1102 CHINA Internet Explorer Windows 2011-04-28 13:44

    看看解密算法

    12 #
  13. alafeizai CHINA Mozilla Firefox Windows 2011-05-05 19:19

    很感兴趣哈,看下。

    13 #
  14. lek CHINA Google Chrome Windows 2011-05-07 10:23

    现在都是加密后的地址,很郁闷呀,完全搞不清楚哪个是真那个是假了

    14 #
  15. tt CHINA Mozilla Firefox Windows 2011-05-13 08:53

    看一下

    15 #
  16. zlli CHINA Internet Explorer Windows 2011-05-19 15:47

    很强啊,学习一下

    16 #
  17. 阿吧头 Opera Windows 2011-05-25 14:47

    啊啊啊啊,我费了好打功夫才把百度坐标转地理坐标,最后才看到这里,学习了,谢谢楼主!

    17 #
  18. 阿巴头 Opera Windows 2011-05-25 15:02

    老兄,我刚还兴奋呢,试验了一下,好像不对,难道百度和MAPBAR的偏移不一样吗?

    18 #
    • admin CHINA Mozilla Firefox Ubuntu Linux 2011-05-25 16:05

      当然不一样!

  19. 阿巴头 Opera Windows 2011-05-25 15:03

    我的邮箱abatou@qq.com ,有机会交流一下。

    19 #
  20. 刘小小 Google Chrome Mac OS 2011-05-25 23:26

    每家的偏移算法都不一样,目前google换了算法后更难获取了

    20 #
  21. 舒服 CHINA Internet Explorer Windows 2011-05-25 23:26

    (酷) 想高手学习,想高手致敬

    21 #
  22. 安装在 CHINA Internet Explorer Windows 2011-05-26 16:37

    看看

    22 #
  23. zhf7878 CHINA Internet Explorer Windows 2011-05-29 12:39

    看看

    23 #
  24. zhf877 AUSTRALIA Mozilla Firefox Windows 2011-06-06 08:57

    reply done

    24 #
  25. zr03 CHINA Internet Explorer Windows 2011-06-09 09:32

    看看

    25 #
  26. 杨武 CHINA Google Chrome Windows 2011-06-14 10:29

    真是个好东西啊,得好好学习一下。

    26 #
  27. 呵呵 Internet Explorer Windows 2011-06-15 01:05

    (困) (困) (困)

    27 #
  28. waitingline CHINA Internet Explorer Windows 2011-06-21 12:51

    老兄,你的能力很好!

    28 #
  29. 颜六新 CHINA Google Chrome Windows 2011-06-22 14:24

    (谄笑) 感谢

    29 #
  30. 阿斯顿 CHINA Google Chrome Windows 2011-06-22 19:33

    (猪头) (生病) (难过)

    30 #
  31. MAYAMOON CHINA Internet Explorer Windows 2011-06-27 14:54

    (风筝) (风筝) (风筝) 飞啊飞啊飞。

    31 #
  32. 颜六新 CHINA Google Chrome Windows 2011-06-30 16:19

    (惊恐) 不准确的,gps采集坐标30.2820 120.113161,算法算到的坐标 120.10808 ,30.28553 杭州文二路上的跑到文一路上去了

    32 #
    • crossyou CHINA Google Chrome Windows 2011-06-30 16:23

      大哥 30.2820 120.113161 => 120.10808 ,30.28553

      经纬坐标要对应好啊!

      • 颜六新 CHINA Google Chrome Windows 2011-07-01 09:07

        (鸭梨) 对应好了的。。。

  33. huang CHINA Internet Explorer Windows 2011-06-30 16:47

    不错哈达的

    33 #
  34. someeyes CHINA Internet Explorer Windows 2011-07-03 16:47

    这也需要评论。。。。

    34 #
  35. CHINA Mozilla Firefox Windows 2011-07-03 19:13

    35 #
  36. lizhijian CHINA Internet Explorer Windows 2011-07-05 10:34

    (给力) 想看看经纬度坐标解密算法

    37 #
  37. kzzzzk UNITED STATES Internet Explorer Windows 2011-07-12 17:35

    想看看经纬度坐标解密算法

    38 #
  38. aaa2011 CHINA Internet Explorer Windows 2011-07-18 17:03

    经过辛苦工作,终于开发出精确到0.001的算法,
    具体效果可以到这里看看:
    http://www.lbsbase.com

    39 #
    • admin CHINA Mozilla Firefox Ubuntu Linux 2011-07-19 11:22

      试了一下,比较准确,加你QQ了。

  39. jun9 Mozilla Firefox Windows 2011-07-21 20:02

    kankan

    40 #
  40. 经过辛苦工作,终于开发出精确到0.001的算法, 具体效果可以到这里看看: http://www.lbsbase.com CHINA Mozilla Firefox Windows 2011-07-28 16:46

    经过辛苦工作,终于开发出精确到0.001的算法,
    具体效果可以到这里看看:
    http://www.lbsbase.com

    41 #
  41. josephmao CHINA Mozilla Firefox Windows 2011-07-31 13:36

    感谢分享!关于坐标解密加密和解密算法,百度和mapbar采用的是同一种吗?

    43 #
    • admin CHINA Google Chrome Windows 2011-08-01 15:42

      肯定不是!

  42. filmlover CHINA Internet Explorer Windows 2011-08-01 10:59

    不错

    44 #
  43. aaaa CHINA Google Chrome Windows 2011-08-03 11:52

    看看

    45 #
  44. skin8 Mozilla Firefox Windows 2011-08-09 20:38

    老兄有没有Google和51ditu的转换算法啊?

    46 #
    • admin CHINA Mozilla Firefox Ubuntu Linux 2011-08-10 20:54

      木有…

  45. 高山 CHINA Google Chrome Windows 2011-08-10 20:23

    顶你小伙

    47 #
  46. 阿斯兰 CHINA Internet Explorer Windows 2011-08-15 17:58

    (谄笑)

    48 #
  47. pmlong CHINA Mozilla Firefox Windows 2011-08-26 14:36

    试试看准不准

    49 #
  48. 废客泉 CHINA Internet Explorer Windows 2011-08-29 17:38

    没办法解决的。。。。。。。。。

    50 #
  49. ttuu Internet Explorer Windows 2011-08-31 12:49

    (大笑) 看看给能解决问题

    51 #
  50. 哈哈哈哈 CHINA Internet Explorer Windows 2011-09-02 10:13

    (给力) (给力)

    52 #
  51. zhaoxinyuan CHINA Internet Explorer Windows 2011-09-06 18:17

    (难过)

    53 #
  52. XIINYUANGAO CHINA Google Chrome Windows 2011-09-11 12:03

    很有用的资料

    54 #
  53. 乐从 CHINA Google Chrome Windows 2011-09-13 08:22

    支持啊 看看能不能解决问题

    55 #
  54. mapig Internet Explorer Windows 2011-09-17 17:44

    参考一下 (大笑)

    56 #
    • admin CHINA Mozilla Firefox Windows 2011-09-17 22:28

      欢迎欢迎~~

  55. 文刚 CHINA Internet Explorer Windows 2011-09-22 12:05

    学习一下

    57 #
  56. 还天 CHINA Internet Explorer Windows 2011-09-28 14:27

    zhichi

    58 #
  57. lixun CHINA Internet Explorer Windows 2011-09-29 10:08

    (握手)实用,等待验证

    59 #
  58. jckie CHINA Internet Explorer Windows 2011-09-30 15:36

    谢谢分享

    60 #
  59. jckie CHINA Internet Explorer Windows 2011-09-30 15:37

    谢谢 (给力)

    61 #
  60. dd CHINA Google Chrome Windows 2011-10-10 11:08

    歇息而 流泪

    63 #
  61. dd CHINA Google Chrome Windows 2011-10-10 11:08

    歇息而 流泪 (防流感) (防流感)

    64 #
  62. 要什么 CHINA Internet Explorer Windows 2011-10-10 13:38

    啊死死啊死发呆啊死的

    65 #
  63. 接啊 CHINA Google Chrome Windows 2011-10-17 13:44

    学习一下啊 (囧) (囧) (囧)

    66 #
  64. CHINA Internet Explorer Windows 2011-10-17 13:46

    支持啊 看看能不能解决问题

    67 #
  65. 学友王 CHINA Google Chrome Windows 2011-10-17 15:11

    我试了一下,这个解密算法,发现不能用啊,现在mapbar返回的是像 ICGGEDWVDRHFV的加密字符串,找了网上的一些解密算法,似乎结果都差一点,不知道您是怎么解决的

    68 #
    • admin CHINA Google Chrome Linux 2011-10-17 15:39

      我试过,是可以的。

      • 学友王 CHINA Google Chrome Windows 2011-11-09 12:30

        您能告诉我一下,怎么获取到mapbar的经纬度吗?我查到的破poi 的地址似乎都是加密的字符串,如何解密?或者能通过邮件告诉我一下。谢谢!

    • ks UNITED STATES Internet Explorer Windows 2012-06-25 15:47

      这个加密字符串是如何得到的呢 ?

  66. windforce CHINA Safari Windows 2011-10-17 15:19

    (微笑) (微笑) 试一试 看看行不

    69 #
  67. ipage Internet Explorer Windows 2011-10-20 14:19

    这个太复杂了

    70 #
    • admin CHINA Google Chrome Windows 2011-10-24 13:09

      请写点有意义的文字呗~~

  68. xyleon CHINA Internet Explorer Windows 2011-10-27 09:01

    太好了,试试行不行

    72 #
  69. 理想 CHINA Internet Explorer Windows 2011-10-27 14:39

    太好了,试试

    73 #
  70. rodger CHINA Internet Explorer Windows 2011-11-02 16:42

    74 #
  71. 我的马甲 Internet Explorer Windows 2011-11-06 11:24

    恰好需要

    76 #
  72. aaaaaaaaaaa CHINA Internet Explorer Windows 2011-11-07 09:37

    (给力)呵呵

    77 #
  73. Ricky CHINA Internet Explorer Windows 2011-11-10 10:30

    看看

    78 #
  74. yangjie CHINA Internet Explorer Windows 2011-11-11 10:33

    今天项目尽力叫我解决mapbar位置偏移的问题,找到该解决方案,等待测试成功。

    79 #
  75. qiyu CHINA Internet Explorer Windows 2011-11-12 09:40

    不错的东西

    80 #
  76. 老男孩博客 CHINA Mozilla Firefox Linux 2011-11-14 19:32

    发现博主现在也搞上google广告了,呵呵,。推荐链接里还有苍井空,嘿嘿

    81 #
  77. tt CHINA Google Chrome Windows 2011-11-22 21:44

    公式怎么想出来的哦

    82 #
  78. aa CHINA Mozilla Firefox Ubuntu Linux 2011-11-28 11:29

    (微笑)

    83 #
  79. Hard CHINA Google Chrome Windows 2011-12-01 03:14

    学习下

    84 #
  80. ff Mozilla Firefox Windows 2011-12-05 18:02

    fff

    85 #
  81. dd CHINA Internet Explorer Windows 2011-12-13 22:27

    支持啊 看看能不能解决问题

    86 #
  82. cnzzx.com CHINA Internet Explorer Windows 2011-12-31 19:26

    (难过) (难过) (难过) (难过) (难过)

    88 #
  83. ishasha CHINA Google Chrome Windows 2012-01-02 14:09

    (给力)
    感谢分享!

    89 #
  84. 所以啊 CHINA Safari Windows 2012-01-09 16:17

    (防流感) 管用吗 现在mapbar 坐标都是加密过的老啊

    90 #
  85. gwrehjgwet CHINA Mozilla Firefox Windows 2012-01-12 08:57

    挺好

    91 #
  86. hackwind CHINA Google Chrome Ubuntu Linux 2012-02-01 23:59

    试了,不行

    92 #
  87. mumu UNITED STATES Google Chrome Windows 2013-04-29 06:20

    经实际数据验证无效,不知是否因为mapbar更新了加密手段,楼主有无办法。

    94 #
    • 煎饼 CHINA Google Chrome Windows 2013-04-30 11:25

      这个是很久以前写的了,现在mapbar的加密方式可能更新了~~,有时间再研究下。

      • 小白 Google Chrome Windows 2013-12-10 11:22

        你好,我发现加密解密可以用,且正确,但是mapbar坐标转实际坐标存在些问题。有无解决办法?或者提点下思路,我试着自己解决。

回复

(必填项)

(必填项)

(可选)