diff --git a/src/mbgl/renderer/layers/render_symbol_layer.cpp b/src/mbgl/renderer/layers/render_symbol_layer.cpp index 1d8c0a70a..d70d10d6f 100644 --- a/src/mbgl/renderer/layers/render_symbol_layer.cpp +++ b/src/mbgl/renderer/layers/render_symbol_layer.cpp @@ -424,7 +424,8 @@ void RenderSymbolLayer::render(PaintParameters& parameters) { assert(bucket.paintProperties.find(getID()) != bucket.paintProperties.end()); const auto& bucketPaintProperties = bucket.paintProperties.at(getID()); - bucket.justReloaded = false; + // Prevent a flickering issue when a symbol is moved. + // bucket.justReloaded = false; auto addRenderables = [&renderableSegments, &tile, renderData, &bucketPaintProperties, it = renderableSegments.begin()] (auto& segments, const SymbolType type) mutable { for (auto& segment : segments) { diff --git a/src/mbgl/text/placement.cpp b/src/mbgl/text/placement.cpp index f98039dec..c3072b05c 100644 --- a/src/mbgl/text/placement.cpp +++ b/src/mbgl/text/placement.cpp @@ -241,9 +241,16 @@ void Placement::placeSymbolBucket(const BucketPlacementData& params, std::setget()), - iconAllowOverlap && (textAllowOverlap || !bucket.hasTextData() || bucket.layout->get()), + bucket.justReloaded && textAllowOverlap && (iconAllowOverlap || !(bucket.hasIconData() || bucket.hasSdfIconData()) || bucket.layout->get()), + bucket.justReloaded && iconAllowOverlap && (textAllowOverlap || !bucket.hasTextData() || bucket.layout->get()), true); for (SymbolInstance& symbolInstance : bucket.symbolInstances) {