Add track step estimated duration
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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); }
|
||||||
|
|||||||
@@ -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
Reference in New Issue
Block a user