Merge branch 'master' into feature/distance-marker

This commit is contained in:
matzepan 2019-10-10 19:48:03 +02:00 committed by GitHub
commit bc480af774
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 170 additions and 14 deletions

View file

@ -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 });
}
}
}
});

View file

@ -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
View 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;
};