iOS定位之百度地圖定位的問(wèn)題

今天遇到個(gè)問(wèn)題,客戶給了個(gè) 矢量地圖,然后給了 左上角 & 右下角 的經(jīng)緯度,讓我實(shí)時(shí)定位,并將自己的位置顯示在適量地圖上。

問(wèn)題來(lái)了:

我把做好的給客戶測(cè)試,客戶遠(yuǎn)在內(nèi)蒙古,我在帝都??蛻粽f(shuō)咋沒(méi)有自己的定位呢,小人在哪呢,看不見(jiàn)啊。

尷尬了,在我這好好滴,去她那就不行了,郁悶。

跟客戶溝通下,客戶的 矢量地圖 都是現(xiàn)畫的,AI畫圖,經(jīng)緯度都是用 北京54采集數(shù)據(jù),我也不懂,反正就是測(cè)出來(lái)的跟 谷歌 的吻合。


那就可以解決了。

客戶用的是谷歌地圖的經(jīng)緯度,我用的是百度地圖的經(jīng)緯度,只要轉(zhuǎn)化下就??了

先了解下

WGS84: 即地圖坐標(biāo),美國(guó)GPS使用的是WGS84的坐標(biāo)系統(tǒng)。GPS系統(tǒng)獲得的坐標(biāo)系統(tǒng),基本為標(biāo)準(zhǔn)的國(guó)際通用的WGS84坐標(biāo)系統(tǒng).

GCJ-02: 即火星坐標(biāo),是由中國(guó)國(guó)家測(cè)繪局制訂的地理信息系統(tǒng)的坐標(biāo)系統(tǒng)。它是一種對(duì)經(jīng)緯度數(shù)據(jù)的加密算法,即加入隨機(jī)的偏差。國(guó)內(nèi)出版的各種地圖系統(tǒng)(包括電子形式),出于國(guó)家安全考慮,必須至少采用GCJ-02對(duì)地理位置進(jìn)行首次加密.

BD-09: 即百度坐標(biāo): 在GCJ02基礎(chǔ)上,進(jìn)行了BD-09二次加密措施,API支持從WGS/GCJ轉(zhuǎn)換成百度坐標(biāo),不支持反轉(zhuǎn).

/**

*坐標(biāo)轉(zhuǎn)換函數(shù),從原始GPS坐標(biāo),mapbar坐標(biāo),google坐標(biāo),51地圖坐標(biāo),mapabc坐標(biāo)轉(zhuǎn)換為百度坐標(biāo)(51地圖坐標(biāo)需要顯出10000)

*@param coordinate 待轉(zhuǎn)換的坐標(biāo)

*@param type 待轉(zhuǎn)換的坐標(biāo)系類型,GPS為原始GPS坐標(biāo),COMMON為google坐標(biāo),51地圖坐標(biāo),mapabc坐標(biāo)

*@return 返回的NSDictionry中包含“x”,“y”字段,各自對(duì)應(yīng)經(jīng)過(guò)base64加密之后的x,y坐標(biāo)

*/

UIKIT_EXTERN NSDictionary* BMKConvertBaiduCoorFrom(CLLocationCoordinate2D coordinate,BMK_COORD_TYPE type);

/**typedef enum

{

BMK_COORDTYPE_GPS = 0, ///GPS設(shè)備采集的原始GPS坐標(biāo)

BMK_COORDTYPE_COMMON,? ///google地圖、soso地圖、aliyun地圖、mapabc地圖和amap地圖所用坐標(biāo)

} BMK_COORD_TYPE;

*base64加密后的坐標(biāo)字典解密函數(shù)

*@param dictionary 帶解密的NSDictionry,該NSDictionry中應(yīng)包含“x”,“y”字段,各自對(duì)應(yīng)經(jīng)過(guò)base64加密之后的x,y坐標(biāo)

*@return 解密之后的坐標(biāo)

*/

UIKIT_EXTERN CLLocationCoordinate2D BMKCoorDictionaryDecode(NSDictionary* dictionary);

用這兩個(gè)方法轉(zhuǎn)一下,就OK了,完美解決!

效果圖

小人就是當(dāng)前位置,爽

下面這段在其他地方看到的,應(yīng)該有所幫助

3.5.2? BD-09 轉(zhuǎn)換為 WGS84.GCJ-02(百度沒(méi)公開(kāi)API,只能google了)

在Github 找到這個(gè)轉(zhuǎn)換算法https://github.com/TinyQ/TQLocationConverter

*? 將WGS-84轉(zhuǎn)為GCJ-02(火星坐標(biāo))+(CLLocationCoordinate2D)transformFromWGSToGCJ:(CLLocationCoordinate2D)wgsLoc;

*? 將GCJ-02(火星坐標(biāo))轉(zhuǎn)為百度坐標(biāo)+ (CLLocationCoordinate2D)transformFromGCJToBaidu:(CLLocationCoordinate2D)p;

*? 將百度坐標(biāo)轉(zhuǎn)為GCJ-02(火星坐標(biāo))+ (CLLocationCoordinate2D)transformFromBaiduToGCJ:(CLLocationCoordinate2D)p; *? 將GCJ-02(火星坐標(biāo))轉(zhuǎn)為WGS-84+ (CLLocationCoordinate2D)transformFromGCJToWGS:(CLLocationCoordinate2D)p;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容