diff options
author | Ansis Brammanis <ansis@mapbox.com> | 2017-10-27 13:13:07 -0400 |
---|---|---|
committer | Ansis Brammanis <ansis@mapbox.com> | 2017-10-27 14:29:44 -0400 |
commit | 67cc74b0c6d1962ed626f686cb78c807c63c21f8 (patch) | |
tree | f522f283e3dfd911a698b4e26bb13efd51ec5e3b | |
parent | e839a806052322e3b6ee2def9637c6c9aba85738 (diff) | |
download | qtlocation-mapboxgl-67cc74b0c6d1962ed626f686cb78c807c63c21f8.tar.gz |
fix collisions in overscaled tiles [skip ci]
-rw-r--r-- | src/mbgl/text/placement.cpp | 8 | ||||
-rw-r--r-- | src/mbgl/text/placement.hpp | 1 |
2 files changed, 6 insertions, 3 deletions
diff --git a/src/mbgl/text/placement.cpp b/src/mbgl/text/placement.cpp index 5fe2b1afe6..fa277b2b8b 100644 --- a/src/mbgl/text/placement.cpp +++ b/src/mbgl/text/placement.cpp @@ -51,6 +51,8 @@ void Placement::placeLayer(RenderSymbolLayer& symbolLayer, const mat4& projMatri const float scale = std::pow(2, state.getZoom() - renderTile.id.canonical.z); + const float pixelRatio = util::EXTENT / (util::tileSize * renderTile.tile.id.overscaleFactor()); + mat4 posMatrix; state.matrixFor(posMatrix, renderTile.id); matrix::multiply(posMatrix, projMatrix, posMatrix); @@ -67,7 +69,7 @@ void Placement::placeLayer(RenderSymbolLayer& symbolLayer, const mat4& projMatri state, pixelsToTileUnits); - placeLayerBucket(symbolBucket, posMatrix, textLabelPlaneMatrix, iconLabelPlaneMatrix, scale, showCollisionBoxes); + placeLayerBucket(symbolBucket, posMatrix, textLabelPlaneMatrix, iconLabelPlaneMatrix, scale, pixelRatio, showCollisionBoxes); } } @@ -77,6 +79,7 @@ void Placement::placeLayerBucket( const mat4& textLabelPlaneMatrix, const mat4& iconLabelPlaneMatrix, const float scale, + const float pixelRatio, const bool showCollisionBoxes) { // TODO collision debug array clearing @@ -86,7 +89,6 @@ void Placement::placeLayerBucket( const bool iconWithoutText = !bucket.hasTextData() || bucket.layout.get<TextOptional>(); const bool textWithoutIcon = !bucket.hasIconData() || bucket.layout.get<IconOptional>(); - float pixelRatio = util::EXTENT / util::tileSize; for (auto& symbolInstance : bucket.symbolInstances) { @@ -108,7 +110,7 @@ void Placement::placeLayerBucket( placeText = collisionIndex.placeFeature(symbolInstance.textCollisionFeature, posMatrix, textLabelPlaneMatrix, pixelRatio, - placedSymbol,scale, fontSize, + placedSymbol, scale, fontSize, bucket.layout.get<TextAllowOverlap>(), bucket.layout.get<TextPitchAlignment>() == style::AlignmentType::Map, showCollisionBoxes); diff --git a/src/mbgl/text/placement.hpp b/src/mbgl/text/placement.hpp index c694e8ef98..9802ad546b 100644 --- a/src/mbgl/text/placement.hpp +++ b/src/mbgl/text/placement.hpp @@ -54,6 +54,7 @@ namespace mbgl { const mat4& textLabelPlaneMatrix, const mat4& iconLabelPlaneMatrix, const float scale, + const float pixelRatio, const bool showCollisionBoxes); void updateBucketOpacities(SymbolBucket&); |