Added hotline based route overlay
Added a overlay which reflects the quality of the route based on either: * cost * altitude * incline
This commit is contained in:
parent
90dfa5b7f3
commit
9eeca7e2d5
7 changed files with 269 additions and 1 deletions
|
|
@ -154,7 +154,7 @@ L.BRouter = L.Class.extend({
|
|||
|
||||
try {
|
||||
geojson = JSON.parse(xhr.responseText);
|
||||
layer = L.geoJSON(geojson).getLayers()[0];
|
||||
layer = this._assignFeatures(L.geoJSON(geojson).getLayers()[0]);
|
||||
|
||||
return cb(null, layer);
|
||||
} catch (e) {
|
||||
|
|
@ -190,6 +190,55 @@ L.BRouter = L.Class.extend({
|
|||
xhr.send(profileText);
|
||||
},
|
||||
|
||||
_assignFeatures: function(segment) {
|
||||
if (segment.feature.properties.messages) {
|
||||
let featureMessages = segment.feature.properties.messages,
|
||||
segmentLatLngs = segment.getLatLngs(),
|
||||
segmentLength = segmentLatLngs.length,
|
||||
featureSegmentIndex = 0;
|
||||
|
||||
for (let mi = 1; mi < featureMessages.length; mi++) {
|
||||
var featureLatLng = this._getFeatureLatLng(featureMessages[mi]);
|
||||
|
||||
for (let fi = featureSegmentIndex; fi < segmentLength; fi++) {
|
||||
let segmentLatLng = segmentLatLngs[fi],
|
||||
featureMessage = featureMessages[mi];
|
||||
|
||||
segmentLatLng.feature = this._getFeature(featureMessage);
|
||||
segmentLatLng.message = featureMessage;
|
||||
|
||||
if (featureLatLng.equals(segmentLatLngs[fi])) {
|
||||
featureSegmentIndex = fi + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return segment;
|
||||
},
|
||||
|
||||
_getFeature: function(featureMessage) {
|
||||
//["Longitude", "Latitude", "Elevation", "Distance", "CostPerKm", "ElevCost", "TurnCost", "NodeCost", "InitialCost", "WayTags", "NodeTags"]
|
||||
return {
|
||||
cost: {
|
||||
perKm: parseInt(featureMessage[4]),
|
||||
elev: parseInt(featureMessage[5]),
|
||||
turn: parseInt(featureMessage[6]),
|
||||
node: parseInt(featureMessage[7]),
|
||||
initial: parseInt(featureMessage[8])
|
||||
},
|
||||
wayTags: featureMessage[9],
|
||||
nodeTags: featureMessage[10]
|
||||
};
|
||||
},
|
||||
|
||||
_getFeatureLatLng: function(message) {
|
||||
var lon = message[0] / 1000000,
|
||||
lat = message[1] / 1000000;
|
||||
|
||||
return L.latLng(lat, lon);
|
||||
},
|
||||
|
||||
_handleProfileResponse: function(xhr, cb) {
|
||||
var response;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue