diff options
author | Ivo van Dongen <info@ivovandongen.nl> | 2017-04-12 12:31:51 +0300 |
---|---|---|
committer | Ivo van Dongen <ivovandongen@users.noreply.github.com> | 2017-04-19 17:21:28 -0700 |
commit | 7ddca3b6116903bae9ecde1d49d29a8f1fedcec3 (patch) | |
tree | efbdeda27dca8238965f6b7e1c263938ebe800d0 /src/mbgl/renderer/circle_bucket.cpp | |
parent | d752235ec790f8c2d4e646c32648253ec64a60c4 (diff) | |
download | qtlocation-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.cpp | 23 |
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 |