Support beelines in data and analysis tabs (WIP)

This commit is contained in:
Norbert Renner 2021-06-25 22:33:11 +02:00
parent 044dab0f80
commit 39f3a10965
3 changed files with 29 additions and 17 deletions

View file

@ -452,6 +452,7 @@ BR.Routing = L.Routing.extend({
createBeeline: function (latLng1, latLng2) { createBeeline: function (latLng1, latLng2) {
const layer = L.Routing.prototype.createBeeline.call(this, latLng1, latLng2); const layer = L.Routing.prototype.createBeeline.call(this, latLng1, latLng2);
const distance = Math.round(latLng1.distanceTo(latLng2));
const props = { const props = {
cost: 0, cost: 0,
'filtered ascend': 0, 'filtered ascend': 0,
@ -473,6 +474,7 @@ BR.Routing = L.Routing.extend({
'WayTags', 'WayTags',
'NodeTags', 'NodeTags',
], ],
[latLng2.lng * 1000000, latLng2.lat * 1000000, 0, distance, 0, 0, 0, 0, 0, '', ''],
], ],
}; };
layer.feature = turf.lineString( layer.feature = turf.lineString(
@ -482,6 +484,14 @@ BR.Routing = L.Routing.extend({
], ],
props props
); );
// corresponding to BRouter._assignFeatures
for (const latLng of layer.getLatLngs()) {
const featureMessage = props.messages[1];
latLng.feature = BR.TrackEdges.getFeature(featureMessage);
latLng.message = featureMessage;
}
return layer; return layer;
}, },
}); });

View file

@ -237,7 +237,7 @@ L.BRouter = L.Class.extend({
var segmentLatLng = segmentLatLngs[fi], var segmentLatLng = segmentLatLngs[fi],
featureMessage = featureMessages[mi]; featureMessage = featureMessages[mi];
segmentLatLng.feature = this._getFeature(featureMessage); segmentLatLng.feature = BR.TrackEdges.getFeature(featureMessage);
segmentLatLng.message = featureMessage; segmentLatLng.message = featureMessage;
if (featureLatLng.equals(segmentLatLngs[fi])) { if (featureLatLng.equals(segmentLatLngs[fi])) {
@ -250,22 +250,6 @@ L.BRouter = L.Class.extend({
return segment; 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]),
},
distance: parseInt(featureMessage[3]),
wayTags: featureMessage[9],
nodeTags: featureMessage[10],
};
},
_getFeatureLatLng: function (message) { _getFeatureLatLng: function (message) {
var lon = message[0] / 1000000, var lon = message[0] / 1000000,
lat = message[1] / 1000000; lat = message[1] / 1000000;

View file

@ -5,6 +5,24 @@
* @type {L.Class} * @type {L.Class}
*/ */
BR.TrackEdges = L.Class.extend({ BR.TrackEdges = L.Class.extend({
statics: {
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]),
},
distance: parseInt(featureMessage[3]),
wayTags: featureMessage[9],
nodeTags: featureMessage[10],
};
},
},
/** /**
* List of indexes for the track array where * List of indexes for the track array where
* a segment with different features ends * a segment with different features ends