diff --git a/lib/layer/decorate.mjs b/lib/layer/decorate.mjs index 354fe8274d..b8f40c8478 100644 --- a/lib/layer/decorate.mjs +++ b/lib/layer/decorate.mjs @@ -60,6 +60,35 @@ export default async layer => { layer.draw?.defaults || {})) }) + // 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() 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()