From 23ec60bc3af588da3004f79ff6b5e5a2a5d7ff77 Mon Sep 17 00:00:00 2001 From: dbauszus-glx Date: Thu, 16 Nov 2023 17:08:48 +0000 Subject: [PATCH 1/4] mvt clear source and refresh --- lib/layer/format/mvt.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/layer/format/mvt.mjs b/lib/layer/format/mvt.mjs index c9cf0360d1..63f9faf394 100644 --- a/lib/layer/format/mvt.mjs +++ b/lib/layer/format/mvt.mjs @@ -8,7 +8,7 @@ export default layer => { layer.reload = () => { - //layer.source.clear() + layer.source.clear() layer.source.refresh() layer.tilesLoaded = [] layer.featureSource.refresh() From 7604d0920f2cd2263b628df744f4f3252928b3a8 Mon Sep 17 00:00:00 2001 From: dbauszus-glx Date: Fri, 17 Nov 2023 11:22:04 +0000 Subject: [PATCH 2/4] sleep for a second after new location --- lib/layer/decorate.mjs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/layer/decorate.mjs b/lib/layer/decorate.mjs index 354fe8274d..0f43bb0926 100644 --- a/lib/layer/decorate.mjs +++ b/lib/layer/decorate.mjs @@ -60,6 +60,8 @@ export default async layer => { layer.draw?.defaults || {})) }) + await sleep(1000) + // Layer must be reloaded to reflect geometry changes. layer.reload() @@ -216,6 +218,10 @@ export default async layer => { return layer; } +function sleep(delay) { + return new Promise((resolve) => setTimeout(resolve, delay)) +} + function show() { // Show the layer From 8e464826b9fde4b25477d0d274466ec8c529e3ff Mon Sep 17 00:00:00 2001 From: dbauszus-glx Date: Fri, 17 Nov 2023 17:56:01 +0000 Subject: [PATCH 3/4] check for new features loaded in mvt tiles. --- lib/layer/decorate.mjs | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/lib/layer/decorate.mjs b/lib/layer/decorate.mjs index 0f43bb0926..9b6233866e 100644 --- a/lib/layer/decorate.mjs +++ b/lib/layer/decorate.mjs @@ -60,7 +60,34 @@ export default async layer => { layer.draw?.defaults || {})) }) - await sleep(1000) + // Check whether feature is loaded on MVT update. + if (layer.format === 'mvt') { + + layer.features = [] + + // Concat layer.features array with features from tileloadend + layer.source.on('tileloadend', concatFeatures); + + function concatFeatures(e) { + + layer.features = layer.features.concat(e.tile.getFeatures()) + } + + setTimeout(checkFeature, 1000) + + function checkFeature() { + + let found = layer.features?.find(F => F.properties?.id === location.id) + + if (found) { + + layer.source.un('tileloadend', concatFeatures); + } else { + + layer.reload() + } + } + } // Layer must be reloaded to reflect geometry changes. layer.reload() From a5ea34e1022707ae9a00e5de578b8eb0369ef54c Mon Sep 17 00:00:00 2001 From: dbauszus-glx Date: Fri, 17 Nov 2023 17:56:27 +0000 Subject: [PATCH 4/4] remove sleep method --- lib/layer/decorate.mjs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/layer/decorate.mjs b/lib/layer/decorate.mjs index 9b6233866e..b8f40c8478 100644 --- a/lib/layer/decorate.mjs +++ b/lib/layer/decorate.mjs @@ -245,10 +245,6 @@ export default async layer => { return layer; } -function sleep(delay) { - return new Promise((resolve) => setTimeout(resolve, delay)) -} - function show() { // Show the layer