• .Net 百度经纬度转高德


    1、需求

    由于我们项目里面的经纬坐标是百度的,而对接的第三方需要的是高德的经纬坐标,两者之间是有位差区别的,不能直接使用,我们需要通过一个算法将百度经纬度转化为高德经纬度,在百度官网上,有java算法,可以实现他们之间的转化,但是没有.Net版本,所以参考java版本,改写一版.Net 版本。

    2、实现代码

     1      /// <summary>
     2         /// 百度经纬度转高德,latitude/ longitude 纬度/经度
     3         /// </summary>
     4         /// <param name="lat">维度</param>
     5         /// <param name="lon">经度</param>
     6         /// <returns></returns>
     7         public static double[] baidu2AMap(double lat, double lon)
     8         {
     9             try
    10             {
    11                 if (lat != 0 && lon != 0)
    12                 {
    13                     double var4 = 0.006401062D;
    14                     double var6 = 0.0060424805D;
    15                     double[] var2 = null;
    16 
    17                     for (int var3 = 0; var3 < 2; ++var3)
    18                     {
    19                         var2 = new double[2];
    20                         double var16 = lon - var4;
    21                         double var18 = lat - var6;
    22                         double[] var29 = new double[2];
    23                         double var24 = Math.Cos(b(var16) + Math.Atan2(var18, var16)) * (a(var18) + Math.Sqrt(var16 * var16 + var18 * var18)) + 0.0065D;
    24                         double var26 = Math.Sin(b(var16) + Math.Atan2(var18, var16)) * (a(var18) + Math.Sqrt(var16 * var16 + var18 * var18)) + 0.006D;
    25                         var29[1] = (c(var24));
    26                         var29[0] = (c(var26));
    27                         var2[1] = (c(lon + var16 - var29[1]));
    28                         var2[0] = (c(lat + var18 - var29[0]));
    29                         var4 = lon - var2[1];
    30                         var6 = lat - var2[0];
    31                     }
    32 
    33                     return var2;
    34                 }
    35             }
    36             catch (Exception ex)
    37             {
    38                 throw ex;
    39             }
    40 
    41             return new double[] { lat, lon };
    42         }
    43         private static double a(double var0)
    44         {
    45             return Math.Sin(var0 * 3000.0D * (3.141592653589793D / 180.0D)) * 2.0E-5D;
    46         }
    47 
    48         private static double b(double var0)
    49         {
    50             return Math.Cos(var0 * 3000.0D * (3.141592653589793D / 180.0D)) * 3.0E-6D;
    51         }
    52 
    53         private static double c(double var0)
    54         {
    55             return Math.Round(var0, 8);
    56         }
  • 相关阅读:
    P1242 新汉诺塔(hanio)
    P2878 [USACO07JAN]保护花朵Protecting the Flowers
    P2096 最佳旅游线路
    [P1363] 幻想迷宫
    在矩阵上跑最小生成树
    tarjan+topsort
    tarjan缩点
    【P3398]】仓鼠找sugar
    树形数组暴力
    解决跨域问题
  • 原文地址:https://www.cnblogs.com/MirZhai/p/10681485.html
Copyright © 2020-2023  润新知