高德地圖百度地圖坐標(biāo)相互轉(zhuǎn)換

/ **

*百度坐標(biāo)(BD09)荸镊,國(guó)測(cè)局坐標(biāo)(火星坐標(biāo),GCJ02)和WGS84坐標(biāo)系之間的轉(zhuǎn)換的工具

*

*參考https://github.com/wandergis/coordtransform實(shí)現(xiàn)的Java版本

* @作者feihong

* /

公共類CoordinateTransformUtil {

static double x_pi = 3.14159265358979324 * 3000.0 / 180.0 ;

// π

static double pi = 3.1415926535897932384626 ;

//長(zhǎng)半軸

靜態(tài)double a = 6378245.0 ;

//扁率

靜態(tài)雙 ee = 0.00669342162296594323 ;

/ **

*百度坐標(biāo)系(BD-09)轉(zhuǎn)WGS坐標(biāo)

*

* @param lng百度坐標(biāo)緯度

* @param lat百度坐標(biāo)經(jīng)度

* @返回 WGS84坐標(biāo)數(shù)組

* /

public static double [] bd09towgs84(double lng,double lat){

double [] gcj = bd09togcj02(lng萧豆,lat);

double [] wgs84 = gcj02towgs84(gcj [ 0 ]籍救,gcj [ 1 ]);

返回 wgs??84;

}

/ **

* WGS坐標(biāo)轉(zhuǎn)百度坐標(biāo)系(BD-09)

*

* @param lng WGS84坐標(biāo)系的經(jīng)度

* @param lat WGS84坐標(biāo)系的緯度

* @return百度坐標(biāo)數(shù)組

* /

public static double [] wgs??84tobd09(double lng,double lat){

double [] gcj = wgs??84togcj02(lng污茵,lat);

double [] bd09 = gcj02tobd09(gcj [ 0 ]樱报,gcj [ 1 ]);

返回 bd09;

}

/ **

*火星坐標(biāo)系(GCJ-02)轉(zhuǎn)百度坐標(biāo)系(BD-09)

*

*谷歌,高德 - >百度

* @param lng火星坐標(biāo)經(jīng)度

* @param lat火星坐標(biāo)緯度

* @return百度坐標(biāo)數(shù)組

* /

public static double [] gcj02tobd09(double lng泞当,double lat){

雙 z = 數(shù)學(xué)迹蛤。sqrt(lng * lng + lat * lat)+ 0.00002 * Math 。sin(lat * x_pi);

double theta = 數(shù)學(xué)襟士。atan2(lat盗飒,lng)+ 0.000003 * Math 。cos(lng * x_pi);

double bd_lng = z * Math 陋桂。cos(θ)+ 0.0065 ;

double bd_lat = z * Math 逆趣。罪(THETA)+ 0.006 ;

返回新的double [] {bd_lng,bd_lat};

}

/ **

*百度坐標(biāo)系(BD-09)轉(zhuǎn)火星坐標(biāo)系(GCJ-02)

*

*百度 - >谷歌嗜历,高德

* @param bd_lon百度坐標(biāo)緯度

* @param bd_lat百度坐標(biāo)經(jīng)度

* @return火星坐標(biāo)數(shù)組

* /

public static double [] bd09togcj02(double bd_lon宣渗,double bd_lat){

雙 X = bd_lon - 0.0065 ;

double y = bd_lat - 0.006 ;

雙 z = 數(shù)學(xué)抖所。sqrt(x * x + y * y)- 0.00002 * Math 。sin(y * x_pi);

double theta = 數(shù)學(xué)痕囱。atan2(y田轧,x)- 0.000003 * Math 。cos(x * x_pi);

double gg_lng = z * Math 鞍恢。COS(THETA);

double gg_lat = z * Math 傻粘。罪(THETA);

返回新的double [] {gg_lng,gg_lat};

}

/ **

* WGS84轉(zhuǎn)GCJ02(火星坐標(biāo)系)

*

* @param lng WGS84坐標(biāo)系的經(jīng)度

* @param lat WGS84坐標(biāo)系的緯度

* @return火星坐標(biāo)數(shù)組

* /

public static double [] wgs??84togcj02(double lng有序,double lat){

if(out_of_china(lng抹腿,lat)){

返回新的double [] {lng,lat};

}

double dlat = transformlat(lng - 105.0旭寿,lat - 35.0);

double dlng = transformlng(lng - 105.0警绩,lat - 35.0);

double radlat = lat / 180.0 * pi;

雙重魔法= 數(shù)學(xué)。罪(radlat);

魔法= 1 - EE *魔*魔;

double sqrtmagic = Math 盅称。SQRT(魔術(shù));

dlat =(dlat * 180.0)/((a *(1 - ee))/(magic * sqrtmagic)* pi);

DLNG =(DLNG * 180.0)/(A / sqrtmagic * 數(shù)學(xué)肩祥。 COS(radlat)* PI);

double mglat = lat + dlat;

雙 mglng = lng + dlng;

返回新的double [] {m??glng,mglat};

}

/ **

* GCJ02(火星坐標(biāo)系)轉(zhuǎn)GPS84

*

* @param lng火星坐標(biāo)系的經(jīng)度

* @param lat火星坐標(biāo)系緯度

* @返回 WGS84坐標(biāo)數(shù)組

* /

public static double [] gcj02towgs84(double lng缩膝,double lat){

if(out_of_china(lng混狠,lat)){

返回新的double [] {lng,lat};

}

double dlat = transformlat(lng - 105.0疾层,lat - 35.0);

double dlng = transformlng(lng - 105.0将饺,lat - 35.0);

double radlat = lat / 180.0 * pi;

雙重魔法= 數(shù)學(xué)。罪(radlat);

魔法= 1 - EE *魔*魔;

double sqrtmagic = Math 痛黎。SQRT(魔術(shù));

dlat =(dlat * 180.0)/((a *(1 - ee))/(magic * sqrtmagic)* pi);

DLNG =(DLNG * 180.0)/(A / sqrtmagic * 數(shù)學(xué)予弧。 COS(radlat)* PI);

double mglat = lat + dlat;

雙 mglng = lng + dlng;

返回新的double [] {lng * 2 - mglng,lat * 2 - mglat};

}

/ **

*緯度轉(zhuǎn)換

*

* @param lng

* @param lat

* @返回

* /

public static double transformlat(double lng湖饱,double lat){

double ret = - 100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math 掖蛤。SQRT(數(shù)學(xué)。 ABS(LNG));

RET + =(20.0 * 數(shù)學(xué)井厌。 SIN(6.0 * LNG * PI)+ 20.0 * 數(shù)學(xué)蚓庭。 SIN(2.0 * LNG * PI))* 2.0 / 3.0 ;

RET + =(20.0 * 數(shù)學(xué)。罪(LAT * PI)+ 40.0 * 數(shù)學(xué)仅仆。罪(LAT / 3.0 * PI))* 2.0 / 3.0 ;

RET + =(160.0 * 數(shù)學(xué)器赞。罪(LAT / 12.0 * PI)+ 320 * 數(shù)學(xué)。罪(LAT * PI / 30.0))* 2.0 / 3.0 ;

返回 ret;

}

/ **

*經(jīng)度轉(zhuǎn)換

*

* @param lng

* @param lat

* @返回

* /

public static double transformlng(double lng墓拜,double lat){

double ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math 拳魁。SQRT(數(shù)學(xué)。 ABS(LNG));

RET + =(20.0 * 數(shù)學(xué)撮弧。 SIN(6.0 * LNG * PI)+ 20.0 * 數(shù)學(xué)潘懊。 SIN(2.0 * LNG * PI))* 2.0 / 3.0 ;

RET + =(20.0 * 數(shù)學(xué)。罪(LNG * PI)+ 40.0 * 數(shù)學(xué)贿衍。罪(LNG / 3.0 * PI))* 2.0 / 3.0 ;

RET + =(150.0 * 數(shù)學(xué)授舟。罪(LNG / 12.0 * PI)+ 300.0 * 數(shù)學(xué)。罪(LNG / 30.0 * PI))* 2.0 / 3.0 ;

返回 ret;

}

/ **

*判斷是否在國(guó)內(nèi)贸辈,不在國(guó)內(nèi)不做偏移

*

* @param lng

* @param lat

* @返回

* /

public static boolean out_of_china(double lng释树,double lat){

如果(lng < 72.004 || lng > 137.8347){

返回true ;

} else if(lat < 0.8293 || lat > 55.8271){

返回true ;

}

返回false ;

}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市擎淤,隨后出現(xiàn)的幾起案子奢啥,更是在濱河造成了極大的恐慌,老刑警劉巖嘴拢,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桩盲,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡席吴,警方通過(guò)查閱死者的電腦和手機(jī)赌结,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)孝冒,“玉大人柬姚,你說(shuō)我怎么就攤上這事∽校” “怎么了量承?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)穴店。 經(jīng)常有香客問(wèn)我撕捍,道長(zhǎng),這世上最難降的妖魔是什么迹鹅? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任卦洽,我火速辦了婚禮,結(jié)果婚禮上斜棚,老公的妹妹穿的比我還像新娘阀蒂。我一直安慰自己,他們只是感情好弟蚀,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布蚤霞。 她就那樣靜靜地躺著,像睡著了一般义钉。 火紅的嫁衣襯著肌膚如雪昧绣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天捶闸,我揣著相機(jī)與錄音夜畴,去河邊找鬼拖刃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛贪绘,可吹牛的內(nèi)容都是我干的兑牡。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼税灌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼均函!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起菱涤,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤苞也,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后粘秆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體如迟,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年翻擒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了氓涣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡陋气,死狀恐怖劳吠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情巩趁,我是刑警寧澤痒玩,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站议慰,受9級(jí)特大地震影響蠢古,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜别凹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一草讶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧炉菲,春花似錦堕战、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至祠饺,卻和暖如春越驻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工缀旁, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留记劈,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓诵棵,卻偏偏與公主長(zhǎng)得像抠蚣,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子履澳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

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