Esempio n. 1
0
        /// <summary>
        /// M
        /// </summary>
        /// <param name="coordinateInfo1"></param>
        /// <param name="coordinateInfo2"></param>
        /// <returns></returns>
        protected static double Distance(CoordinateInfo coordinateInfo1, CoordinateInfo coordinateInfo2)
        {
            var d = CoordinatePositioningHelper.GetDistance(coordinateInfo1,
                                                    coordinateInfo2);

            return d * 1000;
        }
        /// <summary>
        ///  已知A点 和距离差,求 B点经度
        /// </summary>
        /// <param name="coordinate1">经纬度 A</param>
        /// <param name="km">距离</param>
        /// <returns></returns>
        public static CoordinateInfo GetLngDistance(CoordinateInfo coordinate1, double km)
        {
            if (coordinate1 == null)
            {
                return null;
            }

            //纬度90度
            if (coordinate1.Latitude > 90 || coordinate1.Latitude < 90)
            {
                var lng2 = coordinate1.Longitude * 100000 - km * 1000 / Math.Cos(coordinate1.Latitude);

                return new CoordinateInfo(lng2 / 100000, coordinate1.Latitude);
            }

            return new CoordinateInfo(0, coordinate1.Latitude);
        }
        /// <summary>
        /// 获取两点间距离 KM
        /// </summary>
        /// <param name="coordinate1"></param>
        /// <param name="coordinate2"></param>
        /// <returns></returns>
        public static double GetDistance(CoordinateInfo coordinate1, CoordinateInfo coordinate2)
        {
            if (coordinate1 == null || coordinate2 == null)
            {
                return 0;
            }

            return GetDistance(coordinate1.Longitude, coordinate1.Latitude, coordinate2.Longitude, coordinate2.Latitude);
        }