V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
adow
V2EX  ›  iDev

我想在iOS中使用baidu那个坐标偏移接口,但是他返回的居然加密了

  •  
  •   adow ·
    adow · 2012-07-13 16:14:08 +08:00 · 5331 次点击
    这是一个创建于 4516 天前的主题,其中的信息可能已经有所发展或是发生改变。
    百度地图提供了一个将google 坐标偏移计算到baidu 坐标的接口(他提供的示例http://dev.baidu.com/wiki/static/map/API/examples/?v=1.3&0_6#0&6),他是一个js,向baidu api里的convert 发起一个请求,要是在web上我们直接使用那个接口当然没问题。但是我想在iOS中把当前MKMapView 上获取的lng,lat 也转换成baidu 那个,然后我就看了那个接口的地址,发现他返回的是:

    BMap.Convertor.cbk_2335&&BMap.Convertor.cbk_2335({"error":0,"x":"MTIwLjI5NzE4ODEwMTc0","y":"MzEuNTc5NzcxMjgwNTky"})

    而在他原来的js里cbk_2335是一个随机生成的回调函数,里面实际上是:

    BMap.Convertor[callbackName] = function(xyResult){
    delete BMap.Convertor[callbackName]; //调用完需要删除改函数
    var point = new BMap.Point(xyResult.x, xyResult.y);
    callback && callback(point);
    }

    设置了断点后,查看xyResult的话,就是一个Object:

    Object{
    error: 0
    x: "MTIwLjI5NzE4ODEwMTc0"
    y: "MzEuNTc5NzcxMjgwNTky"
    }

    他的BMap.Point 中用这两个加密的坐标就可以完成构造了(在他的api手册里,说明的是两个Number参数),但是我如何在iOS里也使用呢,我如何能把这个转换成实际坐标呢,实在想不出办法来啊?
    16 条回复    1970-01-01 08:00:00 +08:00
    sunwenjun
        1
    sunwenjun  
       2012-07-13 16:16:06 +08:00   ❤️ 1
    目前无解, 他们6月份说会提供这样的接口,但是现在还没有呢。。。
    013231
        2
    013231  
       2012-07-13 16:21:24 +08:00   ❤️ 2
    這一看就是Base64編碼呀. 解碼後是:
    x: 120.29718810174
    y: 31.579771280592
    adow
        3
    adow  
    OP
       2012-07-13 16:51:39 +08:00
    @013231 噢晕,我咋半天没看出来
    Smartype
        4
    Smartype  
       2012-07-13 17:01:15 +08:00   ❤️ 1
    我破解了Google的算法。对,是算法,不需要数据库。
    http://apt.if0rce.com/gmm/
    adow
        5
    adow  
    OP
       2012-07-13 17:05:01 +08:00
    @Smartype 怎么用?
    weihuilee
        6
    weihuilee  
       2012-07-13 17:23:30 +08:00
    @Smartype 很牛x啊,这算法能不能给份看看啊
    Smartype
        7
    Smartype  
       2012-07-13 17:31:16 +08:00   ❤️ 1
    @adow 如果流量不大的话,我可以给你一个web接口,让我帮你调用。
    我不敢公开,怕被喝茶。因为Google没有办法改变算法,所有的现有设备(iOS,Android等)都是这个算法。
    treo
        8
    treo  
       2012-07-16 18:21:17 +08:00
    @Smartype 牛人啊,请问这个算法是逆向得到的还是模拟出来的?
    sd4399340
        9
    sd4399340  
       2012-07-16 18:25:32 +08:00
    @Smartype 太专业了哇~
    Smartype
        10
    Smartype  
       2012-07-16 22:26:39 +08:00   ❤️ 1
    @treo 逆向了MapKit和GMM
    Smartype
        11
    Smartype  
       2012-07-16 22:29:44 +08:00
    算法也包含请求系数和一些变态的转换,一组系数可以用在一片区域上用来纠偏
    keakon
        12
    keakon  
       2012-07-17 16:20:42 +08:00
    @Smartype mark一下,曾经也找过很多资料,一直无解。虽说现在用不到,不过一直好奇啊…
    GreatHan
        13
    GreatHan  
       2012-07-17 18:05:24 +08:00
    使用数学归纳法,用数据算函数,哈哈
    th2006464
        14
    th2006464  
       2012-07-17 18:19:46 +08:00
    @Smartype 太牛逼了
    colorday
        15
    colorday  
       2012-07-17 18:30:04 +08:00
    开放学习下吧
    valianliu
        16
    valianliu  
       2012-07-17 21:04:23 +08:00
    @Smartype 膜拜牛人,给力
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2719 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 06:12 · PVG 14:12 · LAX 22:12 · JFK 01:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.