Add track step estimated duration
This commit is contained in:
@@ -287,19 +287,43 @@ function initSpotMessages(aoMessages, aoTracks) {
|
||||
var aiCoords = feature.geometry.coordinates;
|
||||
if(aiCoords) {
|
||||
var iDistance = 0;
|
||||
//var iElevDrop = 0;
|
||||
var iElevDrop = 0;
|
||||
var iElevGain = 0;
|
||||
var iTime = 0;
|
||||
for (var i = 1; i < aiCoords.length; i++) {
|
||||
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 iElevDelta = aiCoords[i][2] - aiCoords[i - 1][2];
|
||||
var iSegDistance = oCurrPoint.distanceTo(oPrevPoint);
|
||||
|
||||
iDistance += oCurrPoint.distanceTo(oPrevPoint);
|
||||
//iElevDrop += Math.min(iElevDelta, 0);
|
||||
iDistance += iSegDistance;
|
||||
iElevDrop += Math.min(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
|
||||
|
||||
@@ -39,7 +39,8 @@ $fa-css-prefix: fa;
|
||||
.#{$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}-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 */
|
||||
.#{$fa-css-prefix}-post:before { content: fa-content($fa-var-comment); }
|
||||
|
||||
@@ -82,14 +82,11 @@ $legend-color: #222;
|
||||
&.description {
|
||||
font-style: italic;
|
||||
}
|
||||
&.distance, &.elevation {
|
||||
&.detail {
|
||||
margin-top: 1em;
|
||||
width: 50%;
|
||||
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