и вернет корень суммы квадратов разницы координат искомой точки (расстояние). Пишешь что-то вроде
const result = arr.sort ((a, b) => findDistance (a, target) > findDistance (b, target) ? 1 : -1).slice (скольконужноточек)
для поиска расстояния как-то так function LatLngDist($p, $q) { var $R = 6371; // Earth radius in km var $dLat = (($q[0] - $p[0]) * Math.PI / 180); var $dLon = (($q[1] - $p[1]) * Math.PI / 180); var $a = Math.sin($dLat / 2) * Math.sin($dLat / 2) + Math.cos($p[0] * Math.PI / 180) * Math.cos($q[0] * Math.PI / 180) * Math.sin($dLon / 2) * Math.sin($dLon / 2); var $c = 2 * Math.atan2(Math.sqrt($a), Math.sqrt(1 - $a)); return $R * $c; } var q = [51.54110000, -2.41327000]; var p = [51.88650920, -0.52118480]; console.log(LatLngDist(p, q));
Обсуждают сегодня