forked from Snck3rs/contao-leaflet-maps
Fix dynamic data loading for new request url.
This commit is contained in:
34
js/Contao.js
34
js/Contao.js
@@ -139,6 +139,7 @@ L.Contao = L.Evented.extend({
|
|||||||
* @param map Pass a map object so that the data loading events are passed to the map.
|
* @param map Pass a map object so that the data loading events are passed to the map.
|
||||||
*/
|
*/
|
||||||
loadUrl: function (url, type, options, customLayer, map) {
|
loadUrl: function (url, type, options, customLayer, map) {
|
||||||
|
url = this.applyFilterToUrl(url, map);
|
||||||
var layer = omnivore[type](url, options, customLayer);
|
var layer = omnivore[type](url, options, customLayer);
|
||||||
|
|
||||||
if (map) {
|
if (map) {
|
||||||
@@ -147,7 +148,7 @@ L.Contao = L.Evented.extend({
|
|||||||
|
|
||||||
// Add listener for map bounds changes.
|
// Add listener for map bounds changes.
|
||||||
if (map.options.dynamicLoad && layer.options.boundsMode == 'fit') {
|
if (map.options.dynamicLoad && layer.options.boundsMode == 'fit') {
|
||||||
layer.options.requestHash = hash;
|
layer.options.requestUrl = url;
|
||||||
map.on('moveend', layer.refreshData, layer);
|
map.on('moveend', layer.refreshData, layer);
|
||||||
|
|
||||||
map.on('layerremove', function(e) {
|
map.on('layerremove', function(e) {
|
||||||
@@ -326,6 +327,37 @@ L.Contao = L.Evented.extend({
|
|||||||
}
|
}
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Apply the filter to a request url.
|
||||||
|
*
|
||||||
|
* @param {string} url The request url.
|
||||||
|
* @param {L.Map} map The map.
|
||||||
|
*
|
||||||
|
* @returns {string}
|
||||||
|
*/
|
||||||
|
applyFilterToUrl: function (url, map) {
|
||||||
|
var value, query, bounds;
|
||||||
|
|
||||||
|
if (!map || !map.options.dynamicLoad) {
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
|
||||||
|
url = new URL(url);
|
||||||
|
query = new URLSearchParams(url.search);
|
||||||
|
|
||||||
|
bounds = map.getBounds();
|
||||||
|
value = bounds.getSouth() + ',' + bounds.getWest();
|
||||||
|
value += ',' + bounds.getNorth() + ',' + bounds.getEast();
|
||||||
|
|
||||||
|
query.set('filter', 'bbox');
|
||||||
|
query.set('values', value);
|
||||||
|
|
||||||
|
url.search = query.toString();
|
||||||
|
|
||||||
|
return url.toString();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,6 @@ L.GeoJSON.include({
|
|||||||
});
|
});
|
||||||
|
|
||||||
// TODO: Allow other data formats.
|
// TODO: Allow other data formats.
|
||||||
omnivore.geojson(L.contao.createRequestUrl(this.options.requestHash, e.target), null, dataLayer);
|
omnivore.geojson(L.contao.applyFilterToUrl(this.options.requestUrl, e.target), null, dataLayer);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user