在网上找了几个算法,算出来的数都是不正确的,哪位搞过这个,能给我一个算法吗?谢谢了。

解决方案 »

  1.   

    http://hi.baidu.com/%B6%FA%D7%D3/blog/item/e79c36d2f8dac185a1ec9cc5.html
      

  2.   

    google有一个api计算两点距离的,用http发送两点的经纬度,获取结果就是
      

  3.   

    我前段时间刚好刚做这个东西  我博客里面的样式乱了  我贴出来给你整理了一下
    http://blog.csdn.net/fengyarongaa/article/details/6547772
    /// <summary>    
    /// 地球半径    
    /// </summary>    
    private const double EARTH_RADIUS = 6378.137;
     
    /// <summary>    
    /// 计算两点间的距离,传入两点的经度和纬度    
    /// </summary>    
    /// <param name="lat1"></param>    
    /// <param name="lng1"></param>    
    /// <param name="lat2"></param>    
    /// <param name="lng2"></param>    
    /// <returns></returns>    
    public static double GetDistance(double lat1, double lng1, double lat2, double lng2)    
    {        
    double radLat1 = rad(lat1);        
    double radLat2 = rad(lat2);        
    double a = radLat1 - radLat2;        
    double b = rad(lng1) - rad(lng2);        
    double s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a / 2), 2) + Math.Cos(radLat1) * Math.Cos(radLat2) * Math.Pow(Math.Sin(b / 2), 2)));        
    s = s * EARTH_RADIUS;       
    s = Math.Round(s * 10000) / 10000;        
    return s;    
    }    private static double rad(double d)    
    {        
    return d * Math.PI / 180.0;    
    }