По случайному широте / долготе найдите ближайшую координату (широта / долгота) из заданного списка координат, указывающих направление движения. - PullRequest
0 голосов
/ 01 февраля 2019

Необходимо написать ниже функцию для расчета расстояния с учетом 3 входов:

  1. Список остановок с координатами, который также подразумевает направление движения.Больше похоже на многоугольник или который будет образовывать замкнутый цикл.
  2. Случайная координата вокруг цикла.
  3. Одна из координат из списка, указанного в пункте 1.

Нужно найти расстояние между 2 и 3, учитывая направление петли.

PS, больше похоже на то, как Google находит расстояние по двум точкам при заданном маршруте.Но я не могу использовать API Google.

1 Ответ

0 голосов
/ 01 февраля 2019

Здесь вы можете найти формулы и JS-код для получения расстояния между координатами

JavaScript: 
var R = 6371e3; // metres
var φ1 = lat1.toRadians();
var φ2 = lat2.toRadians();
var Δφ = (lat2-lat1).toRadians();
var Δλ = (lon2-lon1).toRadians();

var a = Math.sin(Δφ/2) * Math.sin(Δφ/2) +
        Math.cos(φ1) * Math.cos(φ2) *
        Math.sin(Δλ/2) * Math.sin(Δλ/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));

var d = R * c;

Насколько я понимаю, вы должны проверить расстояния между точкой и всеми остановочными узлами по порядку.,

Наименьшая сумма расстояний P-S[i] и P-S[i+1] показывает наиболее близкий отрезок к этой точке (не всегда работает - например, для самопересекающихся путей и т. Д.)

...