Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

Commit

Permalink
[core] Account for circle-stroke-width in queryRenderedFeatures
Browse files Browse the repository at this point in the history
  • Loading branch information
jfirebaugh committed Jan 10, 2018
1 parent cedda5e commit 08501d7
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 7 deletions.
1 change: 0 additions & 1 deletion platform/node/test/ignores.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
{
"query-tests/circle-stroke-width/inside": "https://github.com/mapbox/mapbox-gl-native/issues/10307",
"query-tests/geometry/multilinestring": "needs investigation",
"query-tests/geometry/multipolygon": "needs investigation",
"query-tests/geometry/polygon": "needs investigation",
Expand Down
3 changes: 2 additions & 1 deletion src/mbgl/renderer/buckets/circle_bucket.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,9 @@ float CircleBucket::getQueryRadius(const RenderLayer& layer) const {
auto circleLayer = layer.as<RenderCircleLayer>();

float radius = get<CircleRadius>(*circleLayer, paintPropertyBinders);
float stroke = get<CircleStrokeWidth>(*circleLayer, paintPropertyBinders);
auto translate = circleLayer->evaluated.get<CircleTranslate>();
return radius + util::length(translate[0], translate[1]);
return radius + stroke + util::length(translate[0], translate[1]);
}

} // namespace mbgl
9 changes: 4 additions & 5 deletions src/mbgl/renderer/layers/render_circle_layer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -108,13 +108,12 @@ bool RenderCircleLayer::queryIntersectsFeature(
bearing,
pixelsToTileUnits);

// Evaluate function
auto circleRadius = evaluated.get<style::CircleRadius>()
.evaluate(feature, zoom, style::CircleRadius::defaultValue())
* pixelsToTileUnits;
// Evaluate functions
auto radius = evaluated.evaluate<style::CircleRadius>(zoom, feature) * pixelsToTileUnits;
auto stroke = evaluated.evaluate<style::CircleStrokeWidth>(zoom, feature) * pixelsToTileUnits;

// Test intersection
return util::polygonIntersectsBufferedMultiPoint(translatedQueryGeometry.value_or(queryGeometry), feature.getGeometries(), circleRadius);
return util::polygonIntersectsBufferedMultiPoint(translatedQueryGeometry.value_or(queryGeometry), feature.getGeometries(), radius + stroke);
}

} // namespace mbgl

0 comments on commit 08501d7

Please sign in to comment.