加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c#-4.0 – 计算bing贴图中两点之间的距离

发布时间:2020-12-15 20:06:01 所属栏目:百科 来源:网络整理
导读:我有一张bing地图,还有两点: Point1,Point2和我想计算这两点之间的距离?那可能吗? 如果我想在point1和point2之间以及point2附近的路径的三分之一处放一个圆圈……我怎么能做到? 解决方法 看 Haversine甚至更好的 Vincenty公式如何解决这个问题. 以下代码
我有一张bing地图,还有两点:
Point1,Point2和我想计算这两点之间的距离?那可能吗?
如果我想在point1和point2之间以及point2附近的路径的三分之一处放一个圆圈……我怎么能做到?

解决方法

看 Haversine甚至更好的 Vincenty公式如何解决这个问题.

以下代码使用hasrsines方法来获取距离:

public double GetDistanceBetweenPoints(double lat1,double long1,double lat2,double long2)
    {
        double distance = 0;

        double dLat = (lat2 - lat1) / 180* Math.PI;
        double dLong = (long2 - long1) / 180 * Math.PI;

        double a = Math.Sin(dLat / 2) * Math.Sin(dLat / 2)
                    + Math.Cos(lat1 / 180* Math.PI) * Math.Cos(lat2 / 180* Math.PI) 
                    * Math.Sin(dLong/2) * Math.Sin(dLong/2);
        double c = 2 * Math.Atan2(Math.Sqrt(a),Math.Sqrt(1 - a));

        //Calculate radius of earth
        // For this you can assume any of the two points.
        double radiusE = 6378135; // Equatorial radius,in metres
        double radiusP = 6356750; // Polar Radius

        //Numerator part of function
        double nr = Math.Pow(radiusE * radiusP * Math.Cos(lat1 / 180 * Math.PI),2);
        //Denominator part of the function
        double dr = Math.Pow(radiusE * Math.Cos(lat1 / 180 * Math.PI),2)
                        + Math.Pow(radiusP * Math.Sin(lat1 / 180 * Math.PI),2);
        double radius = Math.Sqrt(nr / dr);

        //Calculate distance in meters.
        distance = radius * c;
        return distance; // distance in meters
    }

你可以找到一个信息here的好网站.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读