1 //经纬度转墨卡托
2 public Vector2D lonLat2Mercator(Vector2D lonLat)
3 {
4 Vector2D mercator = new Vector2D();
5 double x = lonLat.X * 20037508.34 / 180;
6 double y = Math.Log(Math.Tan((90 + lonLat.Y) * Math.PI / 360)) / (Math.PI / 180);
7 y = y * 20037508.34 / 180;
8 mercator.X = x;
9 mercator.Y = y;
10 return mercator;
11 }
12 //墨卡托转经纬度
13 public Vector2D Mercator2lonLat(Vector2D mercator)
14 {
15 Vector2D lonLat = new Vector2D();
16 double x = mercator.X / 20037508.34 * 180;
17 double y = mercator.Y / 20037508.34 * 180;
18 y = 180 / Math.PI * (2 * Math.Atan(Math.Exp(y * Math.PI / 180)) - Math.PI / 2);
19 lonLat.X = x;
20 lonLat.Y = y;
21 return lonLat;
22 }
WGS84经纬度坐标2 public Vector2D lonLat2Mercator(Vector2D lonLat)
3 {
4 Vector2D mercator = new Vector2D();
5 double x = lonLat.X * 20037508.34 / 180;
6 double y = Math.Log(Math.Tan((90 + lonLat.Y) * Math.PI / 360)) / (Math.PI / 180);
7 y = y * 20037508.34 / 180;
8 mercator.X = x;
9 mercator.Y = y;
10 return mercator;
11 }
12 //墨卡托转经纬度
13 public Vector2D Mercator2lonLat(Vector2D mercator)
14 {
15 Vector2D lonLat = new Vector2D();
16 double x = mercator.X / 20037508.34 * 180;
17 double y = mercator.Y / 20037508.34 * 180;
18 y = 180 / Math.PI * (2 * Math.Atan(Math.Exp(y * Math.PI / 180)) - Math.PI / 2);
19 lonLat.X = x;
20 lonLat.Y = y;
21 return lonLat;
22 }