高德定位SDK坐標偏移問題

使用第三方定位API的目的是穩(wěn)定快速旨椒,在沒有GPS信號時也能通過WIFI及移動信號準確定位壳鹤,但是因為政策問題盟劫,國內的地圖會偏移航缀,多半采用GCJ-02坐標系商架,百度采用BD-09坐標系,倒是我沒想到谬盐,高德的定位API竟然也返回GCJ-02坐標系甸私。


AMapLocation getCoordType描述

而且诚些,setCoordType()不會有任何效果飞傀,就是說在國內不提供WGS84的坐標數(shù)據(jù)。

網(wǎng)上有很多關于把GCJ02轉換成WGS84的算法诬烹,不過不得不說砸烦,都是垃圾,想當年我還辛辛苦苦把搜到的java代碼重寫成JavaScript代碼绞吁,然后一點點調參數(shù)試的肝腸寸斷幢痘。就算網(wǎng)上最靠譜的簡單算法,最多也只能在部分區(qū)域適用家破。聽我一個在百度的師姐說他們在全國范圍內采了2000多萬個控制點用來轉換的颜说,不知是真是假。

很幸運汰聋,高德SDK提供了一個CoordinateConverter工具類门粪,用于將阿里云、百度坐標烹困、谷歌坐標玄妈、圖盟坐標、圖吧坐標髓梅、搜搜坐標轉換成高德地圖坐標(不支持反算)拟蜻。不過他不支持反算,但是我們可以手動反算枯饿。

反算有一個默認的前提:GCJ-02和WGS84在同一個點的坐標值通常差別不會特別大酝锅,一般都是小數(shù)點后面三位起,也就是我們明知定位得到的結果是GCJ02坐標系的奢方,但是就算是把他當成WGS84搔扁,這個誤差也不會特別大,反應在地圖上一般在500米以內袱巨。

假設所在的點P用高德定位出來的數(shù)據(jù)(Xgcj,Ygcj)阁谆,那么在這個點500米的范圍內,一定存在一個點P',他的WGS84的坐標值與P點的GCJ02的坐標值一致愉老,即:
X'wgs = Xgcj
Y'wgs = Ygcj
我們把P'的WGS84的坐標值丟進CoordinateConverter正算一次场绿,那就得到了P'點GCJ02的坐標值(X'gcj,Y'gcj)。P'點的WGS84坐標值和GCJ02的坐標值當然有一個差值:
dx' = X'gcj - X'wgs
dy' = Y'gcj - Y'wgs
又因為P點和P'點相距非常近嫉入,所以我們可以認為:
dx ≈ dx'
dy ≈ dy'
即:
Xwgs≈Xgcj - dx'
Ywgs≈Ygcj - dy'

代碼就比較簡單了:

double longitude = amapLocation.getLongitude();
double latitude = amapLocation.getLatitude();
//初始化坐標轉換類
CoordinateConverter converter = new CoordinateConverter(getApplicationContext());
converter.from(CoordinateConverter.CoordType.GPS);
//設置需要轉換的坐標
converter.coord(new DPoint(latitude,longitude));
//轉換成高德坐標
DPoint destPoint = converter.convert();
double dx = destPoint.getLongitude() -longitude;
double dy = destPoint.getLatitude() -latitude;
longitude = longitude - dx;
latitude = latitude - dy;
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末焰盗,一起剝皮案震驚了整個濱河市璧尸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌熬拒,老刑警劉巖爷光,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異澎粟,居然都是意外死亡蛀序,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門活烙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來徐裸,“玉大人,你說我怎么就攤上這事啸盏≈睾兀” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵回懦,是天一觀的道長气笙。 經常有香客問我,道長怯晕,這世上最難降的妖魔是什么潜圃? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮贫贝,結果婚禮上秉犹,老公的妹妹穿的比我還像新娘。我一直安慰自己稚晚,他們只是感情好崇堵,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著客燕,像睡著了一般鸳劳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上也搓,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天赏廓,我揣著相機與錄音,去河邊找鬼傍妒。 笑死幔摸,一個胖子當著我的面吹牛,可吹牛的內容都是我干的颤练。 我是一名探鬼主播既忆,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了患雇?” 一聲冷哼從身側響起跃脊,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎苛吱,沒想到半個月后酪术,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡翠储,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年绘雁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片彰亥。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡咧七,死狀恐怖衰齐,靈堂內的尸體忽然破棺而出任斋,到底是詐尸還是另有隱情,我是刑警寧澤耻涛,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布废酷,位于F島的核電站,受9級特大地震影響抹缕,放射性物質發(fā)生泄漏澈蟆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一卓研、第九天 我趴在偏房一處隱蔽的房頂上張望趴俘。 院中可真熱鬧,春花似錦奏赘、人聲如沸寥闪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疲憋。三九已至,卻和暖如春梁只,著一層夾襖步出監(jiān)牢的瞬間缚柳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工搪锣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留秋忙,地道東北人。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓构舟,卻偏偏與公主長得像灰追,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內容