using System;
namespace Edu.Common.Plugin
{
///
/// 地图帮助类
///
public class MapHelper
{
//地球半径,单位米
private const double EARTH_RADIUS = 6378137;
///
/// 计算两点位置的距离,返回两点的距离,单位 米
///
/// 第一点纬度
/// 第一点经度
/// 第二点纬度
/// 第二点经度
///
public static double GetDistance(double lat1, double lng1, double lat2, double lng2)
{
double radLat1 = Rad(lat1);
double radLng1 = Rad(lng1);
double radLat2 = Rad(lat2);
double radLng2 = Rad(lng2);
double a = radLat1 - radLat2;
double b = radLng1 - radLng2;
double result = 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))) * EARTH_RADIUS;
return result;
}
///
/// 计算两个坐标点之间的距离
/// 计算两点位置的距离,返回两点的距离,单位 米
///
/// 第一个坐标点的(纬度,经度)
/// 第二个坐标点的(纬度,经度)
/// 返回两点之间的距离,单位:公里/千米
public static double GetPointDistance(string firstPoint, string secondPoint)
{
var firstArray = firstPoint.Split(',');
var secondArray = secondPoint.Split(',');
var firstLatitude = Convert.ToDouble(firstArray[0].Trim());
var firstLongitude = Convert.ToDouble(firstArray[1].Trim());
var secondLatitude = Convert.ToDouble(secondArray[0].Trim());
var secondLongitude = Convert.ToDouble(secondArray[1].Trim());
return GetDistance(firstLatitude, firstLongitude, secondLatitude, secondLongitude);
}
///
/// 经纬度转化成弧度
///
///
///
private static double Rad(double d)
{
return (double)d * Math.PI / 180d;
}
}
}