diff options
author | Chris Loer <chris.loer@gmail.com> | 2017-11-13 15:01:14 -0800 |
---|---|---|
committer | Chris Loer <chris.loer@gmail.com> | 2017-11-13 15:01:14 -0800 |
commit | 0fc047db15baf31f51d911625f3bfe50ed2f28b5 (patch) | |
tree | e3a5418de69d11fb0791949f95388dadba6f46da | |
parent | 07a96aca62a875f0323dbc1ab9d3e593a2884b7a (diff) | |
download | qtlocation-mapboxgl-0fc047db15baf31f51d911625f3bfe50ed2f28b5.tar.gz |
Add comment explaining why CollisionFeatures for icons are always viewport-aligned.
-rw-r--r-- | src/mbgl/layout/symbol_instance.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/text/collision_feature.hpp | 11 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/mbgl/layout/symbol_instance.cpp b/src/mbgl/layout/symbol_instance.cpp index d0398fcd30..6e152349ca 100644 --- a/src/mbgl/layout/symbol_instance.cpp +++ b/src/mbgl/layout/symbol_instance.cpp @@ -32,7 +32,7 @@ SymbolInstance::SymbolInstance(Anchor& anchor_, // Create the collision features that will be used to check whether this symbol instance can be placed textCollisionFeature(line_, anchor, shapedTextOrientations.first, textBoxScale, textPadding, textPlacement, indexedFeature, overscaling), - iconCollisionFeature(line_, anchor, shapedIcon, iconBoxScale, iconPadding, SymbolPlacementType::Point, indexedFeature), + iconCollisionFeature(line_, anchor, shapedIcon, iconBoxScale, iconPadding, indexedFeature), featureIndex(featureIndex_), textOffset(textOffset_), iconOffset(iconOffset_), diff --git a/src/mbgl/text/collision_feature.hpp b/src/mbgl/text/collision_feature.hpp index 4ecd25c717..df1b12819c 100644 --- a/src/mbgl/text/collision_feature.hpp +++ b/src/mbgl/text/collision_feature.hpp @@ -56,19 +56,26 @@ public: : CollisionFeature(line, anchor, shapedText.top, shapedText.bottom, shapedText.left, shapedText.right, boxScale, padding, placement, indexedFeature_, overscaling) {} // for icons + // Icons collision features are always SymbolPlacementType::Point, which means the collision feature + // will be viewport-rotation-aligned even if the icon is map-rotation-aligned (e.g. `icon-rotation-alignment: map` + // _or_ `symbol-placement: line`). We're relying on most icons being "close enough" to square that having + // incorrect rotation alignment doesn't throw off collision detection too much. + // See: https://github.com/mapbox/mapbox-gl-js/issues/4861 CollisionFeature(const GeometryCoordinates& line, const Anchor& anchor, optional<PositionedIcon> shapedIcon, const float boxScale, const float padding, - const style::SymbolPlacementType placement, const IndexedSubfeature& indexedFeature_) : CollisionFeature(line, anchor, (shapedIcon ? shapedIcon->top() : 0), (shapedIcon ? shapedIcon->bottom() : 0), (shapedIcon ? shapedIcon->left() : 0), (shapedIcon ? shapedIcon->right() : 0), - boxScale, padding, placement, indexedFeature_, 1) {} + boxScale, + padding, + style::SymbolPlacementType::Point, + indexedFeature_, 1) {} CollisionFeature(const GeometryCoordinates& line, const Anchor&, |