互聯(lián)網(wǎng)地圖坐標(biāo)系問題

轉(zhuǎn):https://codeload.github.com/wandergis/coordtransform/legacy.zip/master

coordtransform 坐標(biāo)轉(zhuǎn)換

一個(gè)提供了百度坐標(biāo)(BD09)、國(guó)測(cè)局坐標(biāo)(火星坐標(biāo),GCJ02)藕甩、和WGS84坐標(biāo)系之間的轉(zhuǎn)換的工具模塊另外還提供了python版本的代碼https://github.com/wandergis/coordTransform_py

?支持node雷逆、瀏覽器(AMD方式和直接引用方式)

GitHub地址:https://github.com/wandergis/coordtransform

npm地址:https://www.npmjs.com/package/coordtransform

項(xiàng)目主頁:http://wandergis.github.io/coordtransform/

?為什么寫這個(gè)模塊

隨著移動(dòng)互聯(lián)網(wǎng)的興起,幾乎每一個(gè)app都會(huì)去收集用戶位置狐肢,如果恰好你在處理與地理定位相關(guān)的代碼弃秆,并且不了解地理坐標(biāo)系的話,肯定要被我大天朝各種坐標(biāo)系搞暈入桂。寫這個(gè)模塊的目的也是因?yàn)轫?xiàng)目中app獲取的坐標(biāo)是百度sdk獲取的奄薇,在做webgis可視化的時(shí)候各種偏,各種坐標(biāo)不對(duì)抗愁,當(dāng)時(shí)的心情就是下面這個(gè)圖片馁蒂。

?當(dāng)前互聯(lián)網(wǎng)地圖的坐標(biāo)系現(xiàn)狀

?地球坐標(biāo) (WGS84)

國(guó)際標(biāo)準(zhǔn),從 GPS 設(shè)備中取出的數(shù)據(jù)的坐標(biāo)系

國(guó)際地圖提供商使用的坐標(biāo)系

?火星坐標(biāo) (GCJ-02)也叫國(guó)測(cè)局坐標(biāo)系

中國(guó)標(biāo)準(zhǔn)蜘腌,從國(guó)行移動(dòng)設(shè)備中定位獲取的坐標(biāo)數(shù)據(jù)使用這個(gè)坐標(biāo)系

國(guó)家規(guī)定: 國(guó)內(nèi)出版的各種地圖系統(tǒng)(包括電子形式)沫屡,必須至少采用GCJ-02對(duì)地理位置進(jìn)行首次加密。

?百度坐標(biāo) (BD-09)

百度標(biāo)準(zhǔn)撮珠,百度 SDK沮脖,百度地圖,Geocoding 使用

(本來就亂了劫瞳,百度又在火星坐標(biāo)上來個(gè)二次加密)

?開發(fā)過程需要注意的事

從設(shè)備獲取經(jīng)緯度(GPS)坐標(biāo)

? ? 如果使用的是百度sdk那么可以獲得百度坐標(biāo)(bd09)或者火星坐標(biāo)(GCJ02),默認(rèn)是bd09

? ? 如果使用的是ios的原生定位庫倘潜,那么獲得的坐標(biāo)是WGS84

? ? 如果使用的是高德sdk,那么獲取的坐標(biāo)是GCJ02

互聯(lián)網(wǎng)在線地圖使用的坐標(biāo)系

火星坐標(biāo)系:

? ? ? ? iOS 地圖(其實(shí)是高德)

? ? ? ? Gogole地圖

? ? ? ? 搜搜、阿里云志于、高德地圖

百度坐標(biāo)系:

? ? ? ? 當(dāng)然只有百度地圖

WGS84坐標(biāo)系:

? ? ? ? 國(guó)際標(biāo)準(zhǔn)涮因,谷歌國(guó)外地圖、osm地圖等國(guó)外的地圖一般都是這個(gè)

?舉個(gè)栗子

筆者所在的公司app使用的是百度的sdk,需要對(duì)定位坐標(biāo)做web可視化效果伺绽,百度地圖提供的js api滿足不了需求养泡,選用leaflet來做可視化,這里要說到百度地圖了奈应,它使用的坐標(biāo)系和切圖的原點(diǎn)都不一致澜掩,并且其加偏還是非線性的,因此無法利用常用的加載方法去加載杖挣,放棄使用它的底圖肩榕,選用了符合標(biāo)準(zhǔn)的高德底圖,高德底圖使用的是國(guó)測(cè)局坐標(biāo)也就是GCJ02坐標(biāo)系惩妇,如果簡(jiǎn)單的將app獲取的經(jīng)緯度疊加上去株汉,就有可能你本來在百度大廈的位置就顯示在西二旗地鐵站了甚至更遠(yuǎn),因此需要將bd09轉(zhuǎn)成gcj02坐標(biāo)系歌殃,這個(gè)時(shí)候這個(gè)庫就有了用武之地乔妈,對(duì)點(diǎn)批量轉(zhuǎn)換再加載到底圖上,就可以讓點(diǎn)顯示在本應(yīng)該出現(xiàn)的位置氓皱。

另外如果你拿到了一些WGS84的坐標(biāo)路召,想加載到各種底圖上就可以根據(jù)這個(gè)庫在底圖坐標(biāo)系和你的數(shù)據(jù)坐標(biāo)系之間進(jìn)行轉(zhuǎn)換勃刨。希望對(duì)大家有用吧。

?安裝(install)

npm install coordtransform

?示例用法(Example&Usage)

1 NodeJs用法

//國(guó)測(cè)局坐標(biāo)(火星坐標(biāo),比如高德地圖在用),百度坐標(biāo),wgs84坐標(biāo)(谷歌國(guó)外以及絕大部分國(guó)外在線地圖使用的坐標(biāo))

var coordtransform=require('coordtransform');

//百度經(jīng)緯度坐標(biāo)轉(zhuǎn)國(guó)測(cè)局坐標(biāo)

var bd09togcj02=coordtransform.bd09togcj02(116.404, 39.915);

//國(guó)測(cè)局坐標(biāo)轉(zhuǎn)百度經(jīng)緯度坐標(biāo)

var gcj02tobd09=coordtransform.gcj02tobd09(116.404, 39.915);

//wgs84轉(zhuǎn)國(guó)測(cè)局坐標(biāo)

var wgs84togcj02=coordtransform.wgs84togcj02(116.404, 39.915);

//國(guó)測(cè)局坐標(biāo)轉(zhuǎn)wgs84坐標(biāo)

var gcj02towgs84=coordtransform.gcj02towgs84(116.404, 39.915);

console.log(bd09togcj02);

console.log(gcj02tobd09);

console.log(wgs84togcj02);

console.log(gcj02towgs84);

//result

//bd09togcj02:? [ 116.39762729119315, 39.90865673957631 ]

//gcj02tobd09:? [ 116.41036949371029, 39.92133699351021 ]

//wgs84togcj02:? [ 116.41024449916938, 39.91640428150164 ]

//gcj02towgs84:? [ 116.39775550083061, 39.91359571849836 ]

2 瀏覽器用法 直接引用目錄內(nèi)的index.js股淡,會(huì)有一個(gè)coordtransform的全局對(duì)象暴露出來身隐,也支持用AMD加載器加載

<!DOCTYPE html>

<html lang="en">

<head>

? ? <meta charset="UTF-8">

? ? <title>coordTransform</title>

</head>

<body>

<h1>請(qǐng)按F12打開控制臺(tái)查看結(jié)果</h1>

<script src="index.js"></script>

<script>

? ? //國(guó)測(cè)局坐標(biāo)(火星坐標(biāo),比如高德地圖在用),百度坐標(biāo),wgs84坐標(biāo)(谷歌國(guó)外以及絕大部分國(guó)外在線地圖使用的坐標(biāo))

? ? //百度經(jīng)緯度坐標(biāo)轉(zhuǎn)國(guó)測(cè)局坐標(biāo)

? ? var bd09togcj02 = coordtransform.bd09togcj02(116.404, 39.915);

? ? //國(guó)測(cè)局坐標(biāo)轉(zhuǎn)百度經(jīng)緯度坐標(biāo)

? ? var gcj02tobd09 = coordtransform.gcj02tobd09(116.404, 39.915);

? ? //wgs84轉(zhuǎn)國(guó)測(cè)局坐標(biāo)

? ? var wgs84togcj02 = coordtransform.wgs84togcj02(116.404, 39.915);

? ? //國(guó)測(cè)局坐標(biāo)轉(zhuǎn)wgs84坐標(biāo)

? ? var gcj02towgs84 = coordtransform.gcj02towgs84(116.404, 39.915);

? ? console.log(bd09togcj02);

? ? console.log(gcj02tobd09);

? ? console.log(wgs84togcj02);

? ? console.log(gcj02towgs84);

? ? //result

? ? //bd09togcj02:? [ 116.39762729119315, 39.90865673957631 ]

? ? //gcj02tobd09:? [ 116.41036949371029, 39.92133699351021 ]

? ? //wgs84togcj02:? [ 116.41024449916938, 39.91640428150164 ]

? ? //gcj02towgs84:? [ 116.39775550083061, 39.91359571849836 ]

</script>

</body>

</html>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市揣非,隨后出現(xiàn)的幾起案子抡医,更是在濱河造成了極大的恐慌躲因,老刑警劉巖早敬,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異大脉,居然都是意外死亡搞监,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門镰矿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來琐驴,“玉大人,你說我怎么就攤上這事秤标【” “怎么了蛮浑?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵玷禽,是天一觀的道長(zhǎng)姊扔。 經(jīng)常有香客問我妻柒,道長(zhǎng)挽荡,這世上最難降的妖魔是什么洪碳? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任侨艾,我火速辦了婚禮炎辨,結(jié)果婚禮上垫释,老公的妹妹穿的比我還像新娘丝格。我一直安慰自己,他們只是感情好棵譬,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布显蝌。 她就那樣靜靜地躺著,像睡著了一般订咸。 火紅的嫁衣襯著肌膚如雪曼尊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天算谈,我揣著相機(jī)與錄音涩禀,去河邊找鬼。 笑死然眼,一個(gè)胖子當(dāng)著我的面吹牛艾船,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼屿岂,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼践宴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起爷怀,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤阻肩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后运授,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體烤惊,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年吁朦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了柒室。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡逗宜,死狀恐怖雄右,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情纺讲,我是刑警寧澤擂仍,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站熬甚,受9級(jí)特大地震影響逢渔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜则涯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一复局、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧粟判,春花似錦亿昏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至呻澜,卻和暖如春递礼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背羹幸。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工脊髓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人栅受。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓将硝,卻偏偏與公主長(zhǎng)得像恭朗,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子依疼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容