summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/circle_bucket.cpp
diff options
context:
space:
mode:
authorIvo van Dongen <info@ivovandongen.nl>2017-04-12 12:31:51 +0300
committerIvo van Dongen <ivovandongen@users.noreply.github.com>2017-04-19 17:21:28 -0700
commit7ddca3b6116903bae9ecde1d49d29a8f1fedcec3 (patch)
treeefbdeda27dca8238965f6b7e1c263938ebe800d0 /src/mbgl/renderer/circle_bucket.cpp
parentd752235ec790f8c2d4e646c32648253ec64a60c4 (diff)
downloadqtlocation-mapboxgl-7ddca3b6116903bae9ecde1d49d29a8f1fedcec3.tar.gz
[core] account for property functions in query rendered features
Diffstat (limited to 'src/mbgl/renderer/circle_bucket.cpp')
-rw-r--r--src/mbgl/renderer/circle_bucket.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/mbgl/renderer/circle_bucket.cpp b/src/mbgl/renderer/circle_bucket.cpp
index e437eff135..94529a66d8 100644
--- a/src/mbgl/renderer/circle_bucket.cpp
+++ b/src/mbgl/renderer/circle_bucket.cpp
@@ -5,6 +5,7 @@
#include <mbgl/style/layers/circle_layer.hpp>
#include <mbgl/style/layers/circle_layer_impl.hpp>
#include <mbgl/util/constants.hpp>
+#include <mbgl/util/math.hpp>
namespace mbgl {
@@ -97,4 +98,26 @@ void CircleBucket::addFeature(const GeometryTileFeature& feature,
}
}
+template <class Property>
+static float get(const CircleLayer& layer, const std::map<std::string, CircleProgram::PaintPropertyBinders>& paintPropertyBinders) {
+ auto it = paintPropertyBinders.find(layer.getID());
+ if (it == paintPropertyBinders.end() || !it->second.statistics<Property>().max()) {
+ return layer.impl->paint.evaluated.get<Property>().constantOr(Property::defaultValue());
+ } else {
+ return *it->second.statistics<Property>().max();
+ }
+}
+
+float CircleBucket::getQueryRadius(const style::Layer& layer) const {
+ if (!layer.is<CircleLayer>()) {
+ return 0;
+ }
+
+ auto circleLayer = layer.as<CircleLayer>();
+
+ float radius = get<CircleRadius>(*circleLayer, paintPropertyBinders);
+ auto translate = circleLayer->impl->paint.evaluated.get<CircleTranslate>();
+ return radius + util::length(translate[0], translate[1]);
+}
+
} // namespace mbgl