计算两GPS点之间的距离(比较精确)

具体参看网址: http://bbs.zdoz.net/thread-2-1-1.html


        public static double getDistanceFromXtoY(double lat_a, double lng_a, double lat_b, double lng_b)
        {
            double pk = (double)(180 / 3.14169);


            double a1 = lat_a / pk;
            double a2 = lng_a / pk;
            double b1 = lat_b / pk;
            double b2 = lng_b / pk;


            double t1 = Math.Cos(a1) * Math.Cos(a2) * Math.Cos(b1) * Math.Cos(b2);
            double t2 = Math.Cos(a1) * Math.Sin(a2) * Math.Cos(b1) * Math.Sin(b2);
            double t3 = Math.Sin(a1) * Math.Sin(b1);
            double tt = Math.Acos(t1 + t2 + t3);


            return 6366000 * tt;
        }



#import <math.h>

-(double)getDistanceTwoGPS:(NSNumber*)lat1 lng1:(NSNumber*)lng1 lat2:(NSNumber*)lat2 lng2:(NSNumber*)lng2
{
    double pk = (double)(180 / 3.14169);
    
    
    double a1 = [lat1 doubleValue] / pk;
    double a2 = [lng1 doubleValue] / pk;
    double b1 = [lat2 doubleValue] / pk;
    double b2 = [lng2 doubleValue] / pk;
    
    
    double t1 = cos(a1) * cos(a2) * cos(b1) * cos(b2);
    double t2 = cos(a1) * sin(a2) * cos(b1) * sin(b2);
    double t3 = sin(a1) * sin(b1);
    double tt = acos(t1 + t2 + t3);
    
    
    return 6366000 * tt;
}


转载于:https://www.cnblogs.com/zzzili/p/6662544.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值