目前地图开发离不开定位,定位又离不开坐标系的选取和转换,所以有必要简单说一下啦。

世界大地坐标(WGS84)

  1.国际上采用的标准,是为GPS全球定位系统使用而建立的坐标系统,可从专业GPS设备中获取数据。

  2.国际地图使用的坐标系。

       3.谷歌国外地图、osm地图

火星坐标(GCJ-02)

  1.中国采用的标准,准确是叫国测局坐标系,可从国行移动设备定位获得数据

  2.国内出版的各类地图都至少采用GCJ-02对地理位置进行加密偏移

  3.高德地图、天地图、搜搜地图等

百度坐标(BD-09)

  1.百度地图自己采用的坐标标准。

  2.百度坐标是在GCJ-02的基础上再次加密

  3.百度地图

二、各大坐标系间的转换

通用实体 

 1     /// <summary>
 2     /// 经度和纬度
 3     /// </summary>
 4     public class StationGps
 5     {
 6         /// <summary>
 7         /// 经度
 8         /// </summary>
 9         public double longitude { get; set; }
10         /// <summary>
11         /// 纬度
12         /// </summary>
13         public double latitude { get; set; }
14     }

 

1、火星坐标转百度

 1        private static double x_pi = 3.14159265358979324 * 3000.0 / 180.0;
 2 
 3         public static StationGps HxToBd(double lon, double lat)
 4         {
 5             var result = new StationGps();
 6             double x = lon, y = lat;
 7             var z = Math.Sqrt(x * x + y * y) + 0.00002 * Math.Sin(y * x_pi);
 8             var theta = Math.Atan2(y, x) + 0.000003 * Math.Cos(x * x_pi);
 9             result.longitude = z * Math.Cos(theta) + 0.0065;
10             result.latitude = z * Math.Sin(theta) + 0.006;
11             return result;
12         }
View Code

相关文章: