IA.Common/BaiduMapHelper.cs
(开头部分) 3KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
namespace IA.Common
{
public class BaiduMapHelper
{
public static void Wgs2Bd9(double wgLat, double wgLon, out double bdLat, out double bdLon)
{
double mgLat, mgLon;
Wgs2Gcj.Transform(wgLat, wgLon, out mgLat, out mgLon);
Gcj2Bd09.bd_encrypt(mgLat, mgLon, out bdLat, out bdLon);
}
}
internal class Wgs2Gcj
{
//地球坐标系 (WGS-84) 到火星坐标系 (GCJ-02) 的转换算法
const double Pi = 3.14159265358979324;
//
// Krasovsky 1940
//
// a = 6378245.0, 1/f = 298.3
// b = a * (1 - f)
// ee = (a^2 - b^2) / a^2;
const double A = 6378245.0;
const double Ee = 0.00669342162296594323;
//
// World Geodetic System ==> Mars Geodetic System
public static void Transform(double wgLat, double wgLon, out double mgLat, out double mgLon)
{
if (OutOfChina(wgLat, wgLon))
{
mgLat = wgLat;
mgLon = wgLon;
return;
}
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);
mgLat = wgLat + dLat;
mgLon = wgLon + dLon;
}
static bool 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;
}
static double TransformLat(double x, double y)
后面还有 39 行代码,购买后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
