高德地圖糾偏算法(android ,ios)

推薦一個程序員開發(fā)蟹肘、學(xué)習(xí)的好網(wǎng)站词疼,www.it123.top?

歡迎大家轉(zhuǎn)發(fā)收藏。


一帘腹、Android:(紅色方法為主調(diào)函數(shù)贰盗,輸入原始經(jīng)緯度,輸出糾偏后的經(jīng)緯度)

? ? ? ? ? ? ? final static double pi = 3.14159265358979324;

? ? ? ? final static double a = 6378245.0;

? ? ? ? final static double ee = 0.00669342162296594323;

? ? ? ? public static double[] transform(double wgLat, double wgLon) {

? ? ? ? ? ? ? ? double[] latlng = new double[2] ;

? ? ? ? ? ? ? ? if (outOfChina(wgLat, wgLon)) {

? ? ? ? ? ? ? ? ? ? ? ? latlng[0] = wgLat;

? ? ? ? ? ? ? ? ? ? ? ? latlng[1] = wgLon;

? ? ? ? ? ? ? ? ? ? ? ? return latlng ;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? double dLat = transformLat(wgLon - 105.0, wgLat - 35.0);

? ? ? ? ? ? ? ? double dLon = transformLon(wgLon - 105.0, wgLat - 35.0);

? ? ? ? ? ? ? ? double radLat = wgLat / 180.0 * pi;

? ? ? ? ? ? ? ? double magic = Math.sin(radLat);

? ? ? ? ? ? ? ? magic = 1 - ee * magic * magic;

? ? ? ? ? ? ? ? double sqrtMagic = Math.sqrt(magic);

? ? ? ? ? ? ? ? dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);

? ? ? ? ? ? ? ? dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi);

? ? ? ? ? ? ? ? latlng[0] = wgLat + dLat;

? ? ? ? ? ? ? ? latlng[1] = wgLon + dLon;

? ? ? ? ? ? ? ? return latlng ;

? ? ? ? }

? ? ? ? private static boolean outOfChina(double lat, double lon) {

? ? ? ? ? ? ? ? if (lon < 72.004 || lon > 137.8347)

? ? ? ? ? ? ? ? ? ? ? ? return true;

? ? ? ? ? ? ? ? if (lat < 0.8293 || lat > 55.8271)

? ? ? ? ? ? ? ? ? ? ? ? return true;

? ? ? ? ? ? ? ? return false;

? ? ? ? }

? ? ? ? private static double transformLat(double x, double y) {

? ? ? ? ? ? ? ? double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? + 0.2 * Math.sqrt(Math.abs(x));

? ? ? ? ? ? ? ? ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;

? ? ? ? ? ? ? ? ret += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0;

? ? ? ? ? ? ? ? ret += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0;

? ? ? ? ? ? ? ? return ret;

? ? ? ? }

? ? ? ? private static double transformLon(double x, double y) {

? ? ? ? ? ? ? ? double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? * Math.sqrt(Math.abs(x));

? ? ? ? ? ? ? ? ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;

? ? ? ? ? ? ? ? ret += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0;

? ? ? ? ? ? ? ? ret += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? * pi)) * 2.0 / 3.0;

? ? ? ? ? ? ? ? return ret;

? ? ? ? }

二阳欲、IOS(紅色方法為主調(diào)函數(shù)舵盈,輸入原始經(jīng)緯度陋率,輸出糾偏后的經(jīng)緯度)

const double a = 6378245.0;

const double ee = 0.00669342162296594323;

const double pi = 3.14159265358979324;

+(double *)transformFromWGSToGCJ:(double)longitude and:(double)latitude

{

? ? if([self isLocationOutOfChina:longitude and:latitude]){

? ? ? ? double are[] = {longitude ,latitude} ;

? ? ? ? return are ;

? ? }else{

? ? ? ? double adjustLat = [self transformLatWithX:longitude - 105.0 withY:latitude - 35.0];

? ? ? ? double adjustLon = [self transformLonWithX:longitude - 105.0 withY:latitude - 35.0];

? ? ? ? double radLat = latitude / 180.0 * pi;

? ? ? ? double magic = sin(radLat);

? ? ? ? magic = 1 - ee * magic * magic;

? ? ? ? double sqrtMagic = sqrt(magic);

? ? ? ? adjustLat = (adjustLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);

? ? ? ? adjustLon = (adjustLon * 180.0) / (a / sqrtMagic * cos(radLat) * pi);

? ? ? ? double jiupian_longitude = longitude + adjustLon ;

? ? ? ? double jiupian_latitude= latitude + adjustLat ;

? ? ? ? double are[] = {jiupian_longitude ,jiupian_latitude} ;

? ? ? ? return are ;

? ? }

}

//判斷是不是在中國

+(BOOL)isLocationOutOfChina:(double)longitude and:(double)latitude

{

? ? if (longitude < 72.004 || longitude > 137.8347 || latitude < 0.8293 ||latitude > 55.8271)

? ? ? ? return YES;

? ? return NO;

}

+(double)transformLatWithX:(double)x withY:(double)y

{

? ? double lat = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * sqrt(abs(x));

? ? lat += (20.0 * sin(6.0 * x * pi) + 20.0 *sin(2.0 * x * pi)) * 2.0 / 3.0;

? ? lat += (20.0 * sin(y * pi) + 40.0 * sin(y / 3.0 * pi)) * 2.0 / 3.0;

? ? lat += (160.0 * sin(y / 12.0 * pi) + 320 * sin(y *pi / 30.0)) * 2.0 / 3.0;

? ? return lat;

}

+(double)transformLonWithX:(double)x withY:(double)y

{

? ? double lon = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * sqrt(abs(x));

? ? lon += (20.0 * sin(6.0 * x * pi) + 20.0 * sin(2.0 * x * pi)) * 2.0 / 3.0;

? ? lon += (20.0 * sin(x * pi) + 40.0 * sin(x / 3.0 * pi)) * 2.0 / 3.0;

? ? lon += (150.0 * sin(x / 12.0 * pi) + 300.0 * sin(x / 30.0 * pi)) * 2.0 / 3.0;

? ? return lon;

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市书释,隨后出現(xiàn)的幾起案子翘贮,更是在濱河造成了極大的恐慌,老刑警劉巖爆惧,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狸页,死亡現(xiàn)場離奇詭異,居然都是意外死亡扯再,警方通過查閱死者的電腦和手機芍耘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來熄阻,“玉大人斋竞,你說我怎么就攤上這事⊥貉常” “怎么了坝初?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長钾军。 經(jīng)常有香客問我鳄袍,道長,這世上最難降的妖魔是什么吏恭? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任拗小,我火速辦了婚禮,結(jié)果婚禮上樱哼,老公的妹妹穿的比我還像新娘哀九。我一直安慰自己,他們只是感情好搅幅,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布阅束。 她就那樣靜靜地躺著,像睡著了一般盏筐。 火紅的嫁衣襯著肌膚如雪围俘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天琢融,我揣著相機與錄音,去河邊找鬼簿寂。 笑死漾抬,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的常遂。 我是一名探鬼主播纳令,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了平绩?” 一聲冷哼從身側(cè)響起圈匆,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎捏雌,沒想到半個月后跃赚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡性湿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年纬傲,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肤频。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡叹括,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出宵荒,到底是詐尸還是另有隱情汁雷,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布报咳,位于F島的核電站侠讯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏少孝。R本人自食惡果不足惜继低,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望稍走。 院中可真熱鬧袁翁,春花似錦、人聲如沸婿脸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狐树。三九已至焙压,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間抑钟,已是汗流浹背涯曲。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留在塔,地道東北人幻件。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像蛔溃,于是被迫代替她去往敵國和親绰沥。 傳聞我的和親對象是個殘疾皇子篱蝇,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355

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