Encode beeline hash as indexes

This commit is contained in:
Norbert Renner 2021-06-23 23:23:36 +02:00
parent 3c8be96085
commit 044dab0f80

View file

@ -90,7 +90,7 @@ L.BRouter = L.Class.extend({
opts.lonlats = this._parseLonLats(params.lonlats); opts.lonlats = this._parseLonLats(params.lonlats);
} }
if (params.straight) { if (params.straight) {
opts.beelineFlags = this._parseBeelines(params.straight); opts.beelineFlags = this._parseBeelines(params.straight, opts.lonlats);
} }
if (params.nogos) { if (params.nogos) {
opts.nogos = this._parseNogos(params.nogos); opts.nogos = this._parseNogos(params.nogos);
@ -315,17 +315,22 @@ L.BRouter = L.Class.extend({
}, },
_getBeelineString: function (beelineFlags) { _getBeelineString: function (beelineFlags) {
var s = ''; var indexes = [];
for (var i = 0; i < beelineFlags.length; i++) { for (var i = 0; i < beelineFlags.length; i++) {
s += beelineFlags[i] ? '1' : '0'; if (beelineFlags[i]) {
indexes.push(i);
}
} }
return s; return indexes.join(',');
}, },
_parseBeelines: function (s) { _parseBeelines: function (s, lonlats) {
const beelineFlags = []; if (!lonlats || lonlats.length < 2) return [];
for (const c of s) {
beelineFlags.push(!!+c); const beelineFlags = new Array(lonlats.length - 1);
beelineFlags.fill(false);
for (const i of s.split(',')) {
beelineFlags[i] = true;
} }
return beelineFlags; return beelineFlags;
}, },