Lat_to_Travel = CurLat - TargetLat
Long_to_Travel = CurLong - TargetLong
Time_to_Travel = ETA - now
Если расстояния относительно малы, вероятно, нормально предположить линейную прогрессию по этим трем измерениям (*). Затем вам нужно выбрать число промежуточных позиций для отображения, скажем, 10, и рассчитать каждую промежуточную точку соответственно
NbOfIntermediates = 10 // for example
Lat_at_Intermediate(n) = CurLat + (1/NbOfIntermediates * Lat_to_travel)
Long_at_Intermediate(n) = CurLong + (1/NbOfIntermediates * Long_to_travel)
Time_at_Intermediate(n) = now + (1/NbOfIntermediates * Time_to_travel)
Самое сложное во всем этом - поддерживать единицы в порядке.
(*) Несколько соображений относительно того, можно ли предполагать линейную прогрессию ...
Очевидно, что особенности реальности физических элементов (морские течения, ветер, видимость ...) могут иметь большее значение в этом вопросе, чем геопространственная математика.
Предполагая, что транспортное средство движется с постоянной скорость, по прямой линии, [ обычно ] нормально предполагать линейность в измерении широты [технически земля не совсем сфера, это не совсем верно, но чертовски близко ]. Однако на более длинных расстояниях, которые включают относительно большое изменение широты, угловая прогрессия вдоль измерения долготы не является линейной. Причина этого заключается в том, что по мере удаления от экватора степень долготы, выраженная в линейных милях (или километрах ...), уменьшается. Следующая таблица должна дать приблизительное представление об этом эффекте для местоположений в различных широтах:
Latitude Length of a Degree Approximate examples
(of longitude) in
nautical miles
0 60 Kuala Lumpur, Bogota, Nairobi
20 56.5 Mexico city, Mecca, Mumbai, Rio de Janeiro
45 42.5 Geneva, Boston, Seattle, Beijing, Wellington (NZ)
60 30 Oslo, Stockholm, Anchorage AK, St Petersburg Russia
См. удобный онлайн-калькулятор , чтобы рассчитать это для определенной широты.
Другой способ получить представление об этом - увидеть, что путешествие на восток (или запад) по широте Джексонвилль, штат Флорида, или Сан-Диего, штат Калифорния, занимает 52 мили, чтобы покрыть градус долготы; на широте Монреаля или Сиэтла это займет всего 40 миль.