百度地圖-百度谷歌經緯度轉換 (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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM