Пример #1
0
        /// <returns>单位:米</returns>
        public static int 测量两点间间距(M经纬度 点1, M经纬度 点2)
        {
            if (点1.类型 != 点2.类型)
            {
                点1 = HGPS坐标转换.转原始坐标(点1);
                点2 = HGPS坐标转换.转原始坐标(点2);
            }

            return((int)(GMapProviders.EmptyProvider.Projection.GetDistance(new GMap.NET.PointLatLng(点1.纬度, 点1.经度),
                                                                            new GMap.NET.PointLatLng(点2.纬度, 点2.经度)) * 1000));

            //var latRadians1 = __纬度1 * (Math.PI / 180);
            //var latRadians2 = __纬度2 * (Math.PI / 180);
            //var latRadians = latRadians1 - latRadians2;
            //var lngRadians = __经度1 * (Math.PI / 180) - __经度2 * (Math.PI / 180);
            //var f = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(latRadians / 2), 2) + Math.Cos(latRadians1) * Math.Cos(latRadians2) * Math.Pow(Math.Sin(lngRadians / 2), 2)));
            //return f * 6378137;


            //double dLat1InRad = p1.Lat * (Math.PI / 180);
            //double dLong1InRad = p1.Lng * (Math.PI / 180);
            //double dLat2InRad = p2.Lat * (Math.PI / 180);
            //double dLong2InRad = p2.Lng * (Math.PI / 180);
            //double dLongitude = dLong2InRad - dLong1InRad;
            //double dLatitude = dLat2InRad - dLat1InRad;
            //double a = Math.Pow(Math.Sin(dLatitude / 2), 2) + Math.Cos(dLat1InRad) * Math.Cos(dLat2InRad) * Math.Pow(Math.Sin(dLongitude / 2), 2);
            //double c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a));
            //double dDistance = (Axis / 1000.0) * c;
            //return dDistance;
        }
Пример #2
0
        /// <param name="半径">单位:米</param>
        public static bool 判断点在圆形内(M经纬度 点, M经纬度 圆心, int 半径)
        {
            if (点.类型 != 圆心.类型)
            {
                点  = HGPS坐标转换.转原始坐标(点);
                圆心 = HGPS坐标转换.转原始坐标(圆心);
            }
            var __间距 = 测量两点间间距(点, 圆心);

            return(__间距 <= 半径);
        }
Пример #3
0
        /// <param name="半径">单位:米</param>
        public static bool 判断圆重叠(M经纬度 圆心1, int 半径1, M经纬度 圆心2, int 半径2)
        {
            if (圆心1.类型 != 圆心2.类型)
            {
                圆心1 = HGPS坐标转换.转原始坐标(圆心1);
                圆心2 = HGPS坐标转换.转原始坐标(圆心2);
            }

            var __间距 = 测量两点间间距(圆心1, 圆心2);

            return(__间距 <= (半径1 + 半径2));
        }