Знаходження відстані між двома точками на карті за допомогою 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, і хоча підходи можуть дещо відрізнятися, більшість із них дотримуються схожої ідеї. Як правило, така ...
-
Плавне прокручування (скроллінг) до якоря за допомогою JavaScript
Плавне прокручування (скроллінг) – це популярна функція веб-дизайну, яка покращує взаємодію користувача, забезпечуючи плавну навігацію між розділами веб-сторінки. Замість...
-
Компонент акордеона Vue
Простий та легкий плагін компонента акордеон для Vue 3. Підтримує як глобальну реєстрацію плагінів, так і локальне використання компонентів. Написано на TypeScript. Компо...
Залишити відповідь