Merge pull request #157 from Phyks/polygons

Render polygons from URL hash and pass it to BRouter server
This commit is contained in:
Norbert Renner 2019-02-20 17:22:54 +01:00 committed by GitHub
commit 85e8a72148
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 55 additions and 19 deletions

View file

@ -114,12 +114,16 @@ BR.NogoAreas = L.Control.extend({
getOptions: function() { getOptions: function() {
return { return {
nogos: this.drawnItems.getLayers() nogos: this.drawnItems.getLayers().filter(function (e) { return e instanceof L.Circle; }),
polygons: this.drawnItems.getLayers().filter(function (e) { return e instanceof L.Polygon; }),
polylines: this.drawnItems.getLayers().filter(function (e) { return e instanceof L.Polyline; }),
}; };
}, },
setOptions: function(options) { setOptions: function(options) {
var nogos = options.nogos; var nogos = options.nogos;
var polylines = options.polylines;
var polygons = options.polygons;
this._clear(); this._clear();
if (nogos) { if (nogos) {
for (var i = 0; i < nogos.length; i++) { for (var i = 0; i < nogos.length; i++) {
@ -127,6 +131,18 @@ BR.NogoAreas = L.Control.extend({
this.drawnItems.addLayer(nogos[i]); this.drawnItems.addLayer(nogos[i]);
} }
} }
if (polylines) {
for (var i = 0; i < polylines.length; i++) {
polylines[i].setStyle(this.style);
this.drawnItems.addLayer(polylines[i]);
}
}
if (polygons) {
for (var i = 0; i < polygons.length; i++) {
polygons[i].setStyle(this.style);
this.drawnItems.addLayer(polygons[i]);
}
}
}, },
_clear: function () { _clear: function () {

View file

@ -282,6 +282,10 @@ L.BRouter = L.Class.extend({
} }
s += this._formatLatLng(vertices[j]); s += this._formatLatLng(vertices[j]);
} }
if (polyline.options.nogoWeight) {
s += L.BRouter.NUMBER_SEPARATOR;
s += polyline.options.nogoWeight;
}
if (i < (nogos.length - 1)) { if (i < (nogos.length - 1)) {
s += L.BRouter.GROUP_SEPARATOR; s += L.BRouter.GROUP_SEPARATOR;
} }
@ -304,9 +308,15 @@ L.BRouter = L.Class.extend({
latlngs = []; latlngs = [];
for (var j = 0; j < numbers.length - 1;) for (var j = 0; j < numbers.length - 1;)
{ {
latlngs.push([numbers[j++], numbers[j++]]); var lng = Number.parseFloat(numbers[j++]);
var lat = Number.parseFloat(numbers[j++]);
latlngs.push([lat, lng]);
} }
nogos.push(L.polyline(latlngs)); var nogoWeight;
if (j < numbers.length) {
nogoWeight = Number.parseFloat(numbers[j++]);
}
nogos.push(L.polyline(latlngs, { nogoWeight: nogoWeight }));
} }
} }
return nogos; return nogos;
@ -323,6 +333,10 @@ L.BRouter = L.Class.extend({
} }
s += this._formatLatLng(vertices[j]); s += this._formatLatLng(vertices[j]);
} }
if (polygon.options.nogoWeight) {
s += L.BRouter.NUMBER_SEPARATOR;
s += polygon.options.nogoWeight;
}
if (i < (nogos.length - 1)) { if (i < (nogos.length - 1)) {
s += L.BRouter.GROUP_SEPARATOR; s += L.BRouter.GROUP_SEPARATOR;
} }
@ -345,9 +359,15 @@ L.BRouter = L.Class.extend({
latlngs = []; latlngs = [];
for (var j = 0; j < numbers.length - 1;) for (var j = 0; j < numbers.length - 1;)
{ {
latlngs.push([numbers[j++], numbers[j++]]); var lng = Number.parseFloat(numbers[j++]);
var lat = Number.parseFloat(numbers[j++]);
latlngs.push([lat, lng]);
} }
nogos.push(L.polygon(latlngs)); var nogoWeight;
if (j < numbers.length) {
nogoWeight = Number.parseFloat(numbers[j++]);
}
nogos.push(L.polygon(latlngs, { nogoWeight: nogoWeight }));
} }
} }
return nogos; return nogos;