Я работаю над одним требованием, согласно которому мне нужно показывать только те записи, которые попадают в радиус круга.
Для этого я использую ядро .net в качестве внутреннего API, используя ядро сущности Framework. Сначала я извлекаю все записи, а после этого вычисляю расстояние на основе записей из базы данных и моей широты и долготы во время выполнения.
Я использовал ссылку ниже и реализовал код для расчета расстояния.
find- расстояние-между-2-координатами-в-сетевом-ядре
Все работает хорошо на локальном хосте, но когда я развертываю эти изменения на сервере, происходит сбой.
Это занимает больше времени, так как существует более 50 записей, которые нужно обработать и вычислить расстояние одну за другой.
Кроме того, во время отладки я обнаружил, что CalculateDistance занимает почти 3-4 секунды на запись для расчета расстояния и представления их в «км»
Кто-нибудь может пролить свет на этот вопрос, поскольку я застрял в этом вопросе более двух дней.
Код: Выделить всё
private static double DistanceTo(double lat1, double lon1, double? lat2, double? lon2, char unit = 'K')
{
double rlat1 = Math.PI * lat1 / 180;
double rlat2 = (double)(Math.PI * lat2 / 180);
double theta = (double)(lon1 - lon2);
double rtheta = Math.PI * theta / 180;
double dist =
Math.Sin(rlat1) * Math.Sin(rlat2) + Math.Cos(rlat1) *
Math.Cos(rlat2) * Math.Cos(rtheta);
dist = Math.Acos(dist);
dist = dist * 180 / Math.PI;
dist = dist * 60 * 1.1515;
switch (unit)
{
case 'K': //Kilometers -> default
return dist * 1.609344;
case 'N': //Nautical Miles
return dist * 0.8684;
case 'M': //Miles
return dist;
}
return dist;
}
Источник: https://stackoverflow.com/questions/781 ... ngitude-ta