• 百度地图-百度谷歌经纬度转换 (2015年09最新版)


    原文:http://www.cnblogs.com/A--G/p/4835693.html

    转载请注明出处,谢谢~

      最近项目遇到了谷歌和百度的经纬度的转换问题(一家公司一套经啊),找找找,发现有接口:

    方法一:

    baidu经纬度坐标与google经纬度坐标都是经过转换的。使用下面那个url可以将原始坐标或者谷歌的坐标转换成baidu的坐标:
    http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=116.308992&y=40.059225,然后将得到的base64字符还原,就是真实的经纬度。


    请求接口中有四个参数:
    其中,from和to对应的值分别是:0真实坐标;2google坐标;4baidu坐标。
    from:被转换的坐标体系
    to:转换到这个坐标体系
    x:经度
    y:纬度
    接口应答中有三个key,
    应答格式如:{"error":0,"x":"MTE2LjMyMTYyMzg4MjIz","y":"NDAuMDY2NDE2Mjc4NzMx"}

    base64可以转码。

    当然你也可以不用这么麻烦:可以用函数来计算:

    方法二:

     1 //转换函数 
     2 
     3 /**
     4 *坐标转换函数,从原始GPS坐标,mapbar坐标转换成百度坐标
     5 *@param coorWgs84 待转换的原始GPS坐标,或者mapbar的坐标
     6 *@return 返回的NSDictionry中包含“x”,“y”字段,各自对应经过base64加密之后的x,y坐标
     7 */
     8 UIKIT_EXTERN NSDictionary* BMKBaiduCoorForWgs84(CLLocationCoordinate2D coorWgs84);
     9 
    10 /**
    11 *坐标转换函数,从google坐标,51地图坐标,mapabc坐标转换为百度坐标(51地图坐标需要显出10000)
    12 *@param coorGcj 待转换的google坐标,51地图坐标,mapabc坐标
    13 *@return 返回的NSDictionry中包含“x”,“y”字段,各自对应经过base64加密之后的x,y坐标
    14 */
    15 UIKIT_EXTERN NSDictionary* BMKBaiduCoorForGcj(CLLocationCoordinate2D coorGcj);
    16 
    17 /**
    18 *base64加密后的坐标字典解密函数
    19 *@param dictionary 带解密的NSDictionry,该NSDictionry中应包含“x”,“y”字段,各自对应经过base64加密之后的x,y坐标
    20 *@return 解密之后的坐标
    21 */
    22 UIKIT_EXTERN CLLocationCoordinate2D BMKCoorDictionaryDecode(NSDictionary* dictionary);
    23//调用函数
    24 CLLocationCoordinate2D baiduCoordinate = BMKCoorDictionaryDecode(baidudict);

    25 NSDictionary *baidudict = BMKBaiduCoorForGcj(谷歌坐标);//参数是谷歌的CLLocationCoordinate2D类型坐标

    -----------------------------------2015-09-24更新-----------------------------------

    发现坑爹的在接口里(BMKGeometry.h)找不到 BMKBaiduCoorForWgs84 和 BMKBaiduCoorForGcj 方法了,找找找,在百度地图论坛里找到一篇文章:

    原来现在最新的SDK用BMKConvertBaiduCoorFrom方法转换了,而且这方法只能用于单向转成百度的坐标系。

    *@return 返回的NSDictionry中包含“x”,“y”字段,各自对应经过base64加密之后的x,y坐标
    */
    UIKIT_EXTERN NSDictionary* BMKConvertBaiduCoorFrom(CLLocationCoordinate2D coordinate,BMK_COORD_TYPE type);

    需要使用下边的方法解密
    /**
    *base64加密后的坐标字典解密函数
    *@param dictionary 带解密的NSDictionry,该NSDictionry中应包含“x”,“y”字段,各自对应经过base64加密之后的x,y坐标
    *@return 解密之后的坐标
    */
    UIKIT_EXTERN CLLocationCoordinate2D BMKCoorDictionaryDecode(NSDictionary* dictionary);

    举例:

               

    1  //转化成标准的百度坐标
    2             NSDictionary* else_coor_dic = BMKConvertBaiduCoorFrom(else_coor, BMK_COORDTYPE_COMMON);
    3 
    4             CLLocationCoordinate2D baidu_coor = BMKCoorDictionaryDecode(else_coor_dic);

    备注: 在BMK_COORD_TYPE里有2中类型,如果是GPS可以用BMK_COORDTYPE_GPS类型

    1  typedef enum
    2 {
    3     BMK_COORDTYPE_GPS = 0, ///GPS设备采集的原始GPS坐标
    4     BMK_COORDTYPE_COMMON,  ///google地图、soso地图、aliyun地图、mapabc地图和amap地图所用坐标
    5 } BMK_COORD_TYPE;
    6 
    7 
    8  

    参考链接 :1:http://blog.csdn.net/liyunxin0534/article/details/16338611

          2: http://blog.sina.com.cn/s/blog_59fb90df01015y00.html

          3.http://www.cnblogs.com/xuvw/archive/2013/03/05/2943661.html

          4. http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=84935&highlight=%E8%BD%AC%E6%8D%A2

  • 相关阅读:
    阅读笔记之梦断代码(二)
    php完成页面跳转并传值
    java 内部类
    阅读笔记之《程序员修炼之道从小工到专家》(一)
    java 反射机制
    微信的研究【转http://blog.csdn.net/chief1985/article/details/7902016】
    Java sending and receiving file (byte[]) over sockets
    Android音频实时传输与播放(四):源码下载(问题更新)【转】
    windows phone 游戏
    Android音频实时传输与播放(三):AMR硬编码与硬解码【转】
  • 原文地址:https://www.cnblogs.com/A--G/p/4835693.html
Copyright © 2020-2023  润新知