/// <まとめ> /// 変換ツール /// </要約> パブリック クラスGPSTransToAMap { // 楕円パラメータ 静的 ダブル PI = 3.14159265358979324 ; 静的 ダブル A = 6378245.0 ; 静的 ダブル EE = 0.00669342162296594323 ; /// <要約> /// GPSは高いドイツ進む /// </要約> /// <PARAM名= "wgLat"> GPS寸法</ PARAM> /// <PARAM NAME = "wgLon"> GPS経度を</ param>の /// < "の緯度と経度" PARAM名=> 转化后的坐标</ PARAM> パブリック 静的 ダブル [](変換ダブル wgLat、ダブルwgLon)を { ダブル []緯度経度= 新しい ダブル [ 2 ]。// 转化后的坐标 場合(outOfChina(wgLat、wgLon)) { 緯度と経度[ 0 ] = wgLat。 緯度と経度[ 1 ] = wgLon。 返すの緯度と経度; } 倍 DLAT = transformLat(wgLon - 105.0、wgLat - 35.0 )。 二重 dLon = transformLon(wgLon - 105.0、wgLat - 35.0 )。 ダブル radLat = wgLat / 180.0 *のパイ。 ダブルマジック= Math.Sin(radLat)。 魔法 = 1 - EE *マジック* 魔法。 ダブル sqrtMagic = Math.Sqrt(魔法); DLAT =(DLAT * 180.0)/((*(1 - EE))/(マジック* sqrtMagic)* PI)。 dLon =(dLon * 180.0)/(/ sqrtMagic * Math.Cos(radLat)* PI)。 緯度と経度[ 0 ] = wgLat + DLAT。 緯度と経度[ 1 ] = wgLon + dLon。 返すの緯度と経度; } プライベート 静的ブールoutOfChina(ダブル緯度、ダブル経度) { 場合(LON < 72.004 || LON> 137.8347 ) 戻り 真。 場合に(LAT < 0.8293 ||緯度> 55.8271 ) を返す 真; リターン はfalse ; } プライベート 静的 ダブル transformLat(ダブル X、ダブルY) { ダブル 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 。 リターンRET; } プライベート 静的 ダブル transformLon(ダブル X、ダブルY) { ダブル 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.0Math.Sin *(X- / 30.0 * PI))* 2.0 / 3.0 ; リターンRET; } // ---------------- // 著作権:この記事では、「CSDNのブロガーでありますm0_38004177のオリジナルの記事、CC 4.0 BY-SAの著作権契約書に従って、再現し、元のソースのリンクと、この文を添付してください。 // オリジナルリンク:https://blog.csdn.net/m0_38004177/article/details/93974126 }