From 4d44eedb3db6137f40ded7fcda34b11609ac0ada Mon Sep 17 00:00:00 2001 From: Noenandre <5470915+noenandre@users.noreply.github.com> Date: Sun, 23 Jul 2023 00:37:27 +0200 Subject: [PATCH 1/2] Too set autoLoad to false when adding a scene, seems too fix "Uncaught TypeError: Cannot set properties of undefined". --- modules/services/pannellum_photo.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/pannellum_photo.js b/modules/services/pannellum_photo.js index 64dc0e7f5..62220bde7 100644 --- a/modules/services/pannellum_photo.js +++ b/modules/services/pannellum_photo.js @@ -118,7 +118,7 @@ export default { if ( !(key in _currScenes) ) { let newSceneOptions = { showFullscreenCtrl: false, - autoLoad: true, + autoLoad: false, compass: true, yaw: 0, type: 'equirectangular', From f3bf7dbf4dda4a1a673474393860ff28847c05b2 Mon Sep 17 00:00:00 2001 From: Noenandre <5470915+noenandre@users.noreply.github.com> Date: Sun, 23 Jul 2023 14:16:19 +0200 Subject: [PATCH 2/2] Reorder execution of init. Set "on" binding before awaiting cache reset. Set "wfslayers" to a empty map immediately on reset. --- modules/services/vegbilder.js | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/modules/services/vegbilder.js b/modules/services/vegbilder.js index 989180199..3fc3daf4a 100644 --- a/modules/services/vegbilder.js +++ b/modules/services/vegbilder.js @@ -307,16 +307,13 @@ function searchLimited(limit, projection, rtree) { export default { init: async function () { + this.event = utilRebind(this, dispatch, 'on'); if (!_vegbilderCache) { await this.reset(); } - - this.event = utilRebind(this, dispatch, 'on'); }, reset: async function () { - const availableLayers = await fetchAvailableLayers(); - if (_vegbilderCache) { for (const layer of _vegbilderCache.wfslayers.values()) { for (const controller of layer.inflight.values()) { @@ -325,7 +322,16 @@ export default { } } - const wfslayers = availableLayers.reduce((wfslayers, layerInfo) => { + _vegbilderCache = { + wfslayers: new Map(), + rtree: new RBush(), + image2sequence_map: new Map() + }; + + const availableLayers = await fetchAvailableLayers(); + const {wfslayers} = _vegbilderCache; + + for (const layerInfo of availableLayers) { const cache = { layerInfo, loaded: new Map(), @@ -334,17 +340,9 @@ export default { sequences: [] }; wfslayers.set(layerInfo.name, cache); - return wfslayers; - }, new Map()); - - _vegbilderCache = { - wfslayers, - rtree: new RBush(), - image2sequence_map: new Map() - }; + } }, - images: function (projection) { const limit = 5; return searchLimited(limit, projection, _vegbilderCache.rtree);