Merge branch 'master' into feature/distance-marker
This commit is contained in:
commit
bc480af774
10 changed files with 170 additions and 14 deletions
|
|
@ -47,7 +47,11 @@ BR.LayersTab = BR.ControlLayers.extend({
|
|||
if (!self._layers[i].overlay || !map.hasLayer(self._layers[i].layer)) {
|
||||
continue;
|
||||
}
|
||||
self._layers[i].layer.setOpacity(opacity);
|
||||
if (self._layers[i].layer.setOpacity) {
|
||||
self._layers[i].layer.setOpacity(opacity);
|
||||
} else {
|
||||
self._layers[i].layer.setStyle({ opacity: opacity });
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -271,6 +271,8 @@
|
|||
BR.stravaSegments(map, layersControl);
|
||||
}
|
||||
|
||||
BR.tracksLoader(map, layersControl, routing);
|
||||
|
||||
map.addControl(
|
||||
new BR.OpacitySliderControl({
|
||||
id: 'route',
|
||||
|
|
|
|||
87
js/plugin/TracksLoader.js
Normal file
87
js/plugin/TracksLoader.js
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
BR.tracksLoader = function(map, layersControl, routing) {
|
||||
TracksLoader = L.Control.FileLayerLoad.extend({
|
||||
options: {
|
||||
layer: L.geoJson,
|
||||
layerOptions: { style: { color: 'blue' }, interactive: false },
|
||||
addToMap: false,
|
||||
// File size limit in kb (default: 1024) ?
|
||||
fileSizeLimit: 1024
|
||||
},
|
||||
|
||||
_initContainer: function() {
|
||||
var thisLoader = this.loader;
|
||||
|
||||
var fileInput;
|
||||
var container = L.DomUtil.get('navbarLoadTracksContainer');
|
||||
|
||||
// Create an invisible file input
|
||||
fileInput = L.DomUtil.create('input', 'hidden', container);
|
||||
fileInput.type = 'file';
|
||||
fileInput.multiple = 'multiple';
|
||||
if (!this.options.formats) {
|
||||
fileInput.accept = '.gpx,.kml,.json,.geojson';
|
||||
} else {
|
||||
fileInput.accept = this.options.formats.join(',');
|
||||
}
|
||||
fileInput.style.display = 'none';
|
||||
// Load on file change
|
||||
fileInput.addEventListener(
|
||||
'change',
|
||||
function() {
|
||||
thisLoader.loadMultiple(this.files);
|
||||
// reset so that the user can upload the same file again if they want to
|
||||
this.value = '';
|
||||
},
|
||||
false
|
||||
);
|
||||
|
||||
var link = L.DomUtil.get('navbarLoadTracks');
|
||||
L.DomEvent.disableClickPropagation(link);
|
||||
L.DomEvent.on(link, 'click', function(e) {
|
||||
fileInput.click();
|
||||
e.preventDefault();
|
||||
});
|
||||
// dummy, no own representation, triggered in loading menu
|
||||
return L.DomUtil.create('div');
|
||||
}
|
||||
});
|
||||
var tracksLoaderControl = new TracksLoader();
|
||||
tracksLoaderControl.addTo(map);
|
||||
|
||||
tracksLoaderControl.loader.on('data:loaded', function(event) {
|
||||
var eventLayer = event.layer,
|
||||
routingMarkers = [];
|
||||
for (var layerIdx = 0; layerIdx < eventLayer.getLayers().length; layerIdx++) {
|
||||
const layer = eventLayer.getLayers()[layerIdx];
|
||||
if (layer.feature && layer.feature.properties && layer.feature.properties.type) {
|
||||
const layerType = layer.feature.properties.type;
|
||||
if (layerType === 'from' || layerType === 'via' || layerType === 'to') {
|
||||
routingMarkers.push(layer.getLatLng());
|
||||
}
|
||||
}
|
||||
}
|
||||
if (routingMarkers.length > 0) {
|
||||
routing.setWaypoints(routingMarkers, function(event) {
|
||||
var err = event.error;
|
||||
BR.message.showError(
|
||||
i18next.t('warning.tracks-load-error', {
|
||||
error: err && err.message ? err.message : err
|
||||
})
|
||||
);
|
||||
});
|
||||
}
|
||||
layersControl.addOverlay(eventLayer, event.filename);
|
||||
eventLayer.addTo(map);
|
||||
});
|
||||
|
||||
tracksLoaderControl.loader.on('data:error', function(event) {
|
||||
var err = event.error;
|
||||
BR.message.showError(
|
||||
i18next.t('warning.tracks-load-error', {
|
||||
error: err && err.message ? err.message : err
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
return tracksLoaderControl;
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue