Найти расстояние между 2 координатами в. NET ядро - PullRequest
0 голосов
/ 16 марта 2020

Мне нужно найти расстояние между 2 координатами в. NET ядре. Я попытался использовать приведенный ниже код,

var sCoord = new GeoCoordinate (sLatitude, sLongitude); var eCoord = new GeoCoordinate (eLatitude, eLongitude);

return sCoord.GetDistanceTo (eCoord);

Но, похоже, класс GeoCoordinate не поддерживается в ядре. NET. Есть ли какой-либо другой точный способ вычислить расстояние между двумя координатами, используя широту и долготу в дюймах. NET core?

1 Ответ

0 голосов
/ 23 марта 2020

Класс GeoCoordinate является частью System.Device.dll в. net framework. Но это не поддерживается в. Net Core. Я нашел альтернативные методы, чтобы найти расстояние между двумя координатами.

    public double CalculateDistance(Location point1, Location point2)
    {
        var d1 = point1.Latitude * (Math.PI / 180.0);
        var num1 = point1.Longitude * (Math.PI / 180.0);
        var d2 = point2.Latitude * (Math.PI / 180.0);
        var num2 = point2.Longitude * (Math.PI / 180.0) - num1;
        var d3 = Math.Pow(Math.Sin((d2 - d1) / 2.0), 2.0) +
                 Math.Cos(d1) * Math.Cos(d2) * Math.Pow(Math.Sin(num2 / 2.0), 2.0);
        return 6376500.0 * (2.0 * Math.Atan2(Math.Sqrt(d3), Math.Sqrt(1.0 - d3)));
    }

, где point1 и point2 - это 2 точки с координатами, а Location - это класс, как показано ниже,

public class Location
{
    public double Latitude { get; set; }
    public double Longitude { get; set; }
}

Пожалуйста, проверьте ссылку для другого метода для расчета расстояния, который дает тот же результат, что и код выше - Альтернативный метод

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...