From 08501d76c643ce19e3df28fc5d9417d603e64062 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Wed, 10 Jan 2018 13:32:02 -0800 Subject: [core] Account for circle-stroke-width in queryRenderedFeatures --- platform/node/test/ignores.json | 1 - src/mbgl/renderer/buckets/circle_bucket.cpp | 3 ++- src/mbgl/renderer/layers/render_circle_layer.cpp | 9 ++++----- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/platform/node/test/ignores.json b/platform/node/test/ignores.json index 3f904c3048..a8c4562fb0 100644 --- a/platform/node/test/ignores.json +++ b/platform/node/test/ignores.json @@ -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", diff --git a/src/mbgl/renderer/buckets/circle_bucket.cpp b/src/mbgl/renderer/buckets/circle_bucket.cpp index d23f0861f4..c442b661de 100644 --- a/src/mbgl/renderer/buckets/circle_bucket.cpp +++ b/src/mbgl/renderer/buckets/circle_bucket.cpp @@ -108,8 +108,9 @@ float CircleBucket::getQueryRadius(const RenderLayer& layer) const { auto circleLayer = layer.as(); float radius = get(*circleLayer, paintPropertyBinders); + float stroke = get(*circleLayer, paintPropertyBinders); auto translate = circleLayer->evaluated.get(); - return radius + util::length(translate[0], translate[1]); + return radius + stroke + util::length(translate[0], translate[1]); } } // namespace mbgl diff --git a/src/mbgl/renderer/layers/render_circle_layer.cpp b/src/mbgl/renderer/layers/render_circle_layer.cpp index fe2e7cd42d..6092ff5452 100644 --- a/src/mbgl/renderer/layers/render_circle_layer.cpp +++ b/src/mbgl/renderer/layers/render_circle_layer.cpp @@ -108,13 +108,12 @@ bool RenderCircleLayer::queryIntersectsFeature( bearing, pixelsToTileUnits); - // Evaluate function - auto circleRadius = evaluated.get() - .evaluate(feature, zoom, style::CircleRadius::defaultValue()) - * pixelsToTileUnits; + // Evaluate functions + auto radius = evaluated.evaluate(zoom, feature) * pixelsToTileUnits; + auto stroke = evaluated.evaluate(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 -- cgit v1.2.1