Merge pull request #1296 from umap-project/dataloaded-if-not-shown

Fix datalayers not sending "dataloaded" event when min/maxZoom is set and map is loaded outside those values
This commit is contained in:
Yohan Boniface 2023-09-01 17:03:38 +02:00 committed by GitHub
commit 4289747d93
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 5 deletions

View file

@ -407,9 +407,9 @@ L.U.Map.include({
} }
this.eachDataLayer(function (datalayer) { this.eachDataLayer(function (datalayer) {
if (force && !datalayer.hasDataLoaded()) datalayer.show() if (force && !datalayer.hasDataLoaded()) datalayer.show()
if (datalayer.displayedOnLoad() || force) datalayer.onceLoaded(decrementToLoad) if (datalayer.showAtLoad() || force) datalayer.onceLoaded(decrementToLoad)
else decrementToLoad() else decrementToLoad()
if (datalayer.displayedOnLoad() || force) if (datalayer.showAtLoad() || force)
datalayer.onceDataLoaded(decrementDataToLoad) datalayer.onceDataLoaded(decrementDataToLoad)
else decrementDataToLoad() else decrementDataToLoad()
}) })

View file

@ -253,13 +253,15 @@ L.U.DataLayer = L.Evented.extend({
// Retrocompat // Retrocompat
if (this.options.remoteData && this.options.remoteData.from) { if (this.options.remoteData && this.options.remoteData.from) {
this.options.fromZoom = this.options.remoteData.from this.options.fromZoom = this.options.remoteData.from
delete this.options.remoteData.from
} }
if (this.options.remoteData && this.options.remoteData.to) { if (this.options.remoteData && this.options.remoteData.to) {
this.options.toZoom = this.options.remoteData.to this.options.toZoom = this.options.remoteData.to
delete this.options.remoteData.to
} }
this.backupOptions() this.backupOptions()
this.connectToMap() this.connectToMap()
if (this.displayedOnLoad() && this.showAtZoom()) this.show() if (this.showAtLoad()) this.show()
if (!this.umap_id) this.isDirty = true if (!this.umap_id) this.isDirty = true
this.onceLoaded(function () { this.onceLoaded(function () {
@ -268,7 +270,7 @@ L.U.DataLayer = L.Evented.extend({
// Only layers that are displayed on load must be hidden/shown // Only layers that are displayed on load must be hidden/shown
// Automatically, others will be shown manually, and thus will // Automatically, others will be shown manually, and thus will
// be in the "forced visibility" mode // be in the "forced visibility" mode
if (this.displayedOnLoad()) this.map.on('zoomend', this.onZoomEnd, this) if (this.autoLoaded()) this.map.on('zoomend', this.onZoomEnd, this)
}, },
onMoveEnd: function (e) { onMoveEnd: function (e) {
@ -281,7 +283,11 @@ L.U.DataLayer = L.Evented.extend({
if (this.showAtZoom() && !this.isVisible()) this.show() if (this.showAtZoom() && !this.isVisible()) this.show()
}, },
displayedOnLoad: function () { showAtLoad: function () {
return this.autoLoaded() && this.showAtZoom()
},
autoLoaded: function () {
return ( return (
(this.map.datalayersOnLoad && (this.map.datalayersOnLoad &&
this.umap_id && this.umap_id &&