Add track step estimated duration

This commit is contained in:
2019-05-11 18:51:53 +02:00
parent eb82cc3c39
commit 6a1faceb6f
5 changed files with 34 additions and 12 deletions

View File

@@ -287,19 +287,43 @@ function initSpotMessages(aoMessages, aoTracks) {
var aiCoords = feature.geometry.coordinates; var aiCoords = feature.geometry.coordinates;
if(aiCoords) { if(aiCoords) {
var iDistance = 0; var iDistance = 0;
//var iElevDrop = 0; var iElevDrop = 0;
var iElevGain = 0; var iElevGain = 0;
var iTime = 0;
for (var i = 1; i < aiCoords.length; i++) { for (var i = 1; i < aiCoords.length; i++) {
var oCurrPoint = new L.LatLng(aiCoords[i][1], aiCoords[i][0]); var oCurrPoint = new L.LatLng(aiCoords[i][1], aiCoords[i][0]);
var oPrevPoint = new L.LatLng(aiCoords[i - 1][1], aiCoords[i - 1][0]); var oPrevPoint = new L.LatLng(aiCoords[i - 1][1], aiCoords[i - 1][0]);
var iElevDelta = aiCoords[i][2] - aiCoords[i - 1][2]; var iElevDelta = aiCoords[i][2] - aiCoords[i - 1][2];
var iSegDistance = oCurrPoint.distanceTo(oPrevPoint);
iDistance += oCurrPoint.distanceTo(oPrevPoint); iDistance += iSegDistance;
//iElevDrop += Math.min(iElevDelta, 0); iElevDrop += Math.min(iElevDelta, 0);
iElevGain += Math.max(iElevDelta, 0); iElevGain += Math.max(iElevDelta, 0);
var iSpeedCorrecRatio = 0;
var iAngle = iElevDelta / iSegDistance;
if(iAngle < -1) iSpeedCorrecRatio = 0.5;
else if(iAngle < -0.2) iSpeedCorrecRatio = 1.25;
else if(iAngle < 0.1) iSpeedCorrecRatio = 1;
else if(iAngle < 0.25) iSpeedCorrecRatio = 0.85;
else if(iAngle < 0.5) iSpeedCorrecRatio = 0.6;
else if(iAngle < 1) iSpeedCorrecRatio = 0.5;
else iSpeedCorrecRatio = 0.25;
iTime += iSegDistance / 1000 * iSpeedCorrecRatio / 3.5 ; //default speed: 3.5km/h
} }
$('<p>', {'class':'distance'}).addIcon('fa-distance fa-fw', true).append(Math.round(iDistance/1000)+'km').appendTo($Tooltip);
$('<p>', {'class':'elevation'}).addIcon('fa-elevation fa-fw', true).append(iElevGain+'m').appendTo($Tooltip); var iTimeHours = Math.floor(iTime);
var iTimeMinutes = Math.round((iTime - iTimeHours) * 4) * 15; //Approx 15 minutes
if(iTimeMinutes == 60) {
iTimeMinutes = 0;
iTimeHours += 1;
}
if(iTimeMinutes==0) iTimeMinutes = '';
$('<p>', {'class':'detail'}).addIcon('fa-distance fa-fw', true).append(Math.round(iDistance/1000)+'km').appendTo($Tooltip);
$('<p>', {'class':'detail'}).addIcon('fa-time fa-fw', true).append('~ '+iTimeHours+'h'+iTimeMinutes).appendTo($Tooltip);
$('<p>', {'class':'detail'}).addIcon('fa-elev-gain fa-fw', true).append(iElevGain+'m').appendTo($Tooltip);
$('<p>', {'class':'detail'}).addIcon('fa-elev-drop fa-fw', true).append(iElevDrop+'m').appendTo($Tooltip);
} }
oLayer oLayer

View File

@@ -39,7 +39,8 @@ $fa-css-prefix: fa;
.#{$fa-css-prefix}-elev-chart:before { content: fa-content($fa-var-chart-area); } .#{$fa-css-prefix}-elev-chart:before { content: fa-content($fa-var-chart-area); }
.#{$fa-css-prefix}-message-in:before { content: fa-content($fa-var-shoe-prints); } .#{$fa-css-prefix}-message-in:before { content: fa-content($fa-var-shoe-prints); }
.#{$fa-css-prefix}-distance:before { content: fa-content($fa-var-arrow-circle-right); } .#{$fa-css-prefix}-distance:before { content: fa-content($fa-var-arrow-circle-right); }
.#{$fa-css-prefix}-elevation:before { content: fa-content($fa-var-arrow-circle-up); } .#{$fa-css-prefix}-elev-drop:before { content: fa-content($fa-var-arrow-circle-down); }
.#{$fa-css-prefix}-elev-gain:before { content: fa-content($fa-var-arrow-circle-up); }
/* Feed */ /* Feed */
.#{$fa-css-prefix}-post:before { content: fa-content($fa-var-comment); } .#{$fa-css-prefix}-post:before { content: fa-content($fa-var-comment); }

View File

@@ -82,14 +82,11 @@ $legend-color: #222;
&.description { &.description {
font-style: italic; font-style: italic;
} }
&.distance, &.elevation { &.detail {
margin-top: 1em; margin-top: 1em;
width: 50%; width: 50%;
display: inline-block; display: inline-block;
} }
&.elevation {
text-align: right;
}
} }
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long