Delphi 根据经纬度计算地球上两点之间的距离


本文整理自网络,侵删。

 
EARTH_RADIUS = 6378137.0;    //单位M    function getRad(d: Double): Double;  begin    Result := d * PI / 180.0;  end;    function GetFlatternDistance(lat1, lng1, lat2, lng2: Double): Double;  var    f, g, l: Double;    sg, sl, sf: Double;    s, c, w, r, d, h1, h2: Double;    a, fl: Double;  begin    f := getRad((lat1 + lat2)/2);    g := getRad((lat1 - lat2)/2);    l := getRad((lng1 - lng2)/2);                sg := sin(g);    sl := sin(l);    sf := sin(f);      a := EARTH_RADIUS;    fl := 1/298.257;                sg := sg*sg;    sl := sl*sl;    sf := sf*sf;      s := sg*(1-sl) + (1-sf)*sl;    c := (1-sg)*(1-sl) + sf*sl;      w := ArcTan(sqrt(s/c));    r := sqrt(s*c)/w;    d := 2 * w * a;    h1 := (3*r -1)/2/c;    h2 := (3*r +1)/2/s;      Result := d*(1 + fl*(h1*sf*(1-sg) - h2*(1-sf)*sg));  end;  

相关阅读 >>

Delphi 利用http的post方法做个在线翻译的小工

Delphi vcl 鼠标左键长按功能的实现

Delphi什么是thttpclient?

Delphi2010 关于record类型rtti反射的用途和方法

Delphi post数据到网页

Delphi如何生成一段时间内的所有日期

Delphi 动态修改exe文件的图标

Delphi中使用directx截屏函数

Delphi 用 tbytesstream 类实现的读文件为十六进制字符的函数

Delphi中用拼音首字符序列来实现检索功能

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...