zoukankan      html  css  js  c++  java
  • .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         }
  • 相关阅读:
    POJ_1456 Supermarket 【并查集/贪心】
    CSS before和after伪类
    CSS anchor专为链接属性选择器
    CSS 属性选择器
    CSS float浮动
    CSS 外边距和内填充
    CSS 边框属性
    CSS 背景
    CSS 组和选择器
    CSS 引入方式
  • 原文地址:https://www.cnblogs.com/MirZhai/p/10681485.html
Copyright © 2011-2022 走看看