diff --git a/js/plugin/Routing.js b/js/plugin/Routing.js index 7bdeda6..19907ac 100644 --- a/js/plugin/Routing.js +++ b/js/plugin/Routing.js @@ -452,6 +452,7 @@ BR.Routing = L.Routing.extend({ createBeeline: function (latLng1, latLng2) { const layer = L.Routing.prototype.createBeeline.call(this, latLng1, latLng2); + const distance = Math.round(latLng1.distanceTo(latLng2)); const props = { cost: 0, 'filtered ascend': 0, @@ -473,6 +474,7 @@ BR.Routing = L.Routing.extend({ 'WayTags', 'NodeTags', ], + [latLng2.lng * 1000000, latLng2.lat * 1000000, 0, distance, 0, 0, 0, 0, 0, '', ''], ], }; layer.feature = turf.lineString( @@ -482,6 +484,14 @@ BR.Routing = L.Routing.extend({ ], 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; }, }); diff --git a/js/router/BRouter.js b/js/router/BRouter.js index 5438744..6b272cd 100644 --- a/js/router/BRouter.js +++ b/js/router/BRouter.js @@ -237,7 +237,7 @@ L.BRouter = L.Class.extend({ var segmentLatLng = segmentLatLngs[fi], featureMessage = featureMessages[mi]; - segmentLatLng.feature = this._getFeature(featureMessage); + segmentLatLng.feature = BR.TrackEdges.getFeature(featureMessage); segmentLatLng.message = featureMessage; if (featureLatLng.equals(segmentLatLngs[fi])) { @@ -250,22 +250,6 @@ L.BRouter = L.Class.extend({ 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) { var lon = message[0] / 1000000, lat = message[1] / 1000000; diff --git a/js/util/TrackEdges.js b/js/util/TrackEdges.js index 6602545..9102ec8 100644 --- a/js/util/TrackEdges.js +++ b/js/util/TrackEdges.js @@ -5,6 +5,24 @@ * @type {L.Class} */ 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 * a segment with different features ends