完善功能
This commit is contained in:
53
电子展板/Utility/Other/CalcUtils.cs
Normal file
53
电子展板/Utility/Other/CalcUtils.cs
Normal file
@@ -0,0 +1,53 @@
|
||||
using System;
|
||||
|
||||
namespace 电子展板.Utility.Other
|
||||
{
|
||||
public class CalcUtils
|
||||
{
|
||||
/// <summary>
|
||||
/// 计算两个坐标的距离
|
||||
/// </summary>
|
||||
/// <param name="long1">经度1</param>
|
||||
/// <param name="lat1">纬度1</param>
|
||||
/// <param name="long2">经度2</param>
|
||||
/// <param name="lat2">纬度2</param>
|
||||
/// <returns></returns>
|
||||
public static double getDistance(double long1, double lat1, double long2, double lat2)
|
||||
{
|
||||
double a, b, R;
|
||||
R = 6371393; // 地球半径
|
||||
lat1 = lat1 * Math.PI / 180.0;
|
||||
lat2 = lat2 * Math.PI / 180.0;
|
||||
a = lat1 - lat2;
|
||||
b = (long1 - long2) * Math.PI / 180.0;
|
||||
double d;
|
||||
double sa2, sb2;
|
||||
sa2 = Math.Sin(a / 2.0);
|
||||
sb2 = Math.Sin(b / 2.0);
|
||||
d = 2 * R * Math.Asin(Math.Sqrt(sa2 * sa2 + Math.Cos(lat1) * Math.Cos(lat2) * sb2 * sb2));
|
||||
return d;
|
||||
}
|
||||
|
||||
public static double algorithm(double longitude1, double latitude1, double longitude2, double latitude2)
|
||||
{
|
||||
double Lat1 = rad(latitude1); // 纬度
|
||||
double Lat2 = rad(latitude2);
|
||||
double a = Lat1 - Lat2;//两点纬度之差
|
||||
double b = rad(longitude1) - rad(longitude2); //经度之差
|
||||
double s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a / 2), 2) + Math.Cos(Lat1) * Math.Cos(Lat2) * Math.Pow(Math.Sin(b / 2), 2)));//计算两点距离的公式
|
||||
s = s * 6378137.0;//弧长乘地球半径(半径为米)
|
||||
s = Math.Round(s * 10000d) / 10000d;//精确距离的数值
|
||||
return s;
|
||||
}
|
||||
|
||||
private static double rad(double d)
|
||||
{
|
||||
return d * Math.PI / 180.00; //角度转换成弧度
|
||||
}
|
||||
|
||||
public static double getVectorAngle(double x1, double y1, double x2, double y2)
|
||||
{
|
||||
return Math.Acos((x1 * x2 + y1 * y2) / (Math.Sqrt(x1 * x1 + y1 * y1) * Math.Sqrt(x2 * x2 + y2 * y2))) * 180.0 / Math.PI;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user