С библиотекой JS anf turf js Мне нужно по нескольким маркерам рассчитать 1) среднюю скорость 2) время прибытия в любую точку маркера
Я делаю как:
const markerIds = Object.keys(markers)
const points2Data = []
let summarized_distance= 0
let arrival_date= moment(tripRow.arrival_date)// arrival time
let departure_date= moment(tripRow.departure_date) // departure time
for (let i = 1; i < markerIds.length; i++) {
const marker = markers[markerIds[i - 1]]
const nextMarker = markers[markerIds[i]]
const from = turf.point([marker.lat, marker.lng])
const to = turf.point([nextMarker.lat, nextMarker.lng])
const distance = turf.distance(from, to, { units: 'kilometers' })
summarized_distance= summarized_distance + distance
// get data
const points2Item = {
id: marker.id,
start: marker.id,
end: nextMarker.id,
speed: marker.speed,
lat: nextMarker.lat,
lng: nextMarker.lng,
latlng: [nextMarker.lat, nextMarker.lng],
distance: distance,
time: distance / marker.speed,
eta:null
}
points2Data.push(points2Item)
} // for (let i = 1; i < markerIds.length; i++) {
// get medium speed
let calculated_speed = summarized_distance / summarized_trip_time
let next_arrival_time= arrival_date
for (let i = 0; i < points2Data.length; i++) {
// I think I need to get raio of 1 marker distance from whole distance
let distance_ratio= summarized_distance / points2Data[i].distance
// I think I need to get calculate time ratio and add it to next_arrival_time, something like
next_arrival_time= next_arrival_time.add(CALCULATED_RATIO_TIME, 'hour')
// But how to calculate this CALCULATED_RATIO_TIME ?
points2Data[i].eta= next_arrival_time.format('YYYY-MM-DD HH:mm')
как рассчитать это CALCULATED_RATIO_TIME? Я надеюсь, что мой общий поток правилен, но я столкнулся с этой проблемой ...
ИЗМЕНЕНО: Я переделал это как:
let next_arrival_time= departure_date
for (let i = 0; i < points2Data.length; i++) {
// That was invalid I got ratio of distance
let distance_ratio= points2Data[i].distance / summarized_distance
// I got ratio of time
next_arrival_time= next_arrival_time.add( summarized_trip_time * distance_ratio , 'hour')
points2Data[i].eta= next_arrival_time.format('YYYY-MM-DD HH:mm')
} // for (let i = 1; i < points2Data.length; i++) {
Lokking на результаты У меня есть результаты очень похоже, как я ожидаю, но havinf
departure_date= ‘2020-03-02 12:00:00’
и
arrival_date='2020-03-03 12:00:00'
с несколькими очками я получил последнее очко:
2020-03-03 11:59
и потерял 1 минуту - почему и как это исправить?
Спасибо!