Знаходження відстані між двома точками на карті за допомогою JavaScript (TypeScript)
Якщо у вас є координати двох точок на карті, обчислення відстані між ними є досить простим завданням. Цей тип обчислення зазвичай використовується в картографічних програмах, службах доставки, навігаційних системах та геолокаційних об’єктах. У цьому прикладі ми зосередимося на визначенні відстані за допомогою географічних координат, таких як широта та довгота. Ці значення дозволяють нам працювати з реальними положеннями на поверхні Землі та отримувати точні результати.
Для обчислення відстані ми скористаємося формулою Гаверсинуса, яка є відомим математичним підходом для вимірювання відстані між двома точками на сфері. Оскільки Земля не плоска, прості лінійні обчислення недостатньо точні для цієї мети. Формула Гаверсинуса враховує кривизну Землі та забезпечує надійне наближення для більшості практичних випадків. Це робить її популярним вибором у багатьох проектах, пов’язаних з геолокацією.
У нашому прикладі кінцева відстань буде обчислюватися в метрах, що корисно для коротких та середніх відстаней, таких як пішохідні маршрути або міська навігація. Якщо вам потрібно працювати з більшими відстанями, ту саму формулу можна легко адаптувати для повернення значень у кілометрах. Ви також можете змінити вивід залежно від вимог вашої програми.
Сам розрахунок буде реалізовано в TypeScript, що додає чіткості типізації та кращої читабельності коду. Це робить рішення простішим в обслуговуванні та безпечнішим для використання у великих проектах.
TypeScript
type Coord = {
lat: number;
lon: number;
};
// Constant for projection (Earth's radius in meters)
const EARTH_RADIUS = 6371000;
// Converting degrees to radians
function degToRad(deg: number) {
return (deg * Math.PI) / 180;
}
function haversineDistance (point1: Coord, point2: Coord) {
const { lat: lat1, lon: lon1 } = point1;
const { lat: lat2, lon: lon2 } = point2;
const lat1Rad = degToRad(lat1);
const lon1Rad = degToRad(lon1);
const lat2Rad = degToRad(lat2);
const lon2Rad = degToRad(lon2);
const deltaLat = lat2Rad - lat1Rad;
const deltaLon = lon2Rad - lon1Rad;
// Haversine formula
const a =
Math.sin(deltaLat / 2) ** 2 +
Math.cos(lat1Rad) * Math.cos(lat2Rad) * Math.sin(deltaLon / 2) ** 2;
const c = 2 * Math.asin(Math.sqrt(a));
return Math.round(EARTH_RADIUS * c);
}
Схожі записи:
-
Як отримати максимальне значення в масиві JavaScript
Коротка замітка про пошук максимального значення в масиві JavaScript із числовими значеннями. Об’єкт Array в JS не має власного методу max. Щоб знайти максимальне знач...
-
Як клонувати (копіювати) об’єкт і масив у JavaScript
Клонування об'єктів і масивів - не така проста тема, як може здатися на перший погляд. Клонування об’єктів і масивів у JavaScript можна здійснювати за допомогою різних ...
-
Таймер зворотного відліку на JavaScript
Таймери зворотного відліку зазвичай використовуються на веб-сайтах, що рекламують товари, послуги або спеціальні пропозиції. Ви часто можете побачити їх на цільових сторі...
Залишити відповідь