summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJustin R. Miller <incanus@codesorcery.net>2015-03-06 16:53:11 -0800
committerJohn Firebaugh <john.firebaugh@gmail.com>2015-03-09 11:57:32 -0700
commit685aa01043e765eb9b0a176fea6524a5b0ac0f6e (patch)
tree7fd3b245d2daac07023328e2b588c52caab9128f /src
parent91dc0ba06f501d3a75bb253fbf7083a22c5111d3 (diff)
downloadqtlocation-mapboxgl-685aa01043e765eb9b0a176fea6524a5b0ac0f6e.tar.gz
pass actual feature pbf when filtering layer features
Diffstat (limited to 'src')
-rw-r--r--src/mbgl/map/vector_tile.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/mbgl/map/vector_tile.cpp b/src/mbgl/map/vector_tile.cpp
index 72142f0a0a..235a4151d7 100644
--- a/src/mbgl/map/vector_tile.cpp
+++ b/src/mbgl/map/vector_tile.cpp
@@ -179,13 +179,14 @@ template bool mbgl::evaluate(const FilterExpression&, const GeometryTileTagExtra
util::ptr<GeometryTileFeature> FilteredVectorTileLayer::nextMatchingFeature() {
while (feature_pbf.next(2)) {
- pbf current_feature_pbf = feature_pbf.message();
+ pbf matching_feature_pbf = feature_pbf.message();
+ pbf current_feature_pbf = matching_feature_pbf;
GeometryTileTagExtractor<pbf> extractor(layer);
while (current_feature_pbf.next()) {
if (current_feature_pbf.tag == 2) { // tags
- extractor.setTags(current_feature_pbf);
+ extractor.setTags(current_feature_pbf.message());
} else if (current_feature_pbf.tag == 3) { // geometry type
extractor.setType(GeometryFeatureType(current_feature_pbf.varint()));
} else {
@@ -194,7 +195,7 @@ util::ptr<GeometryTileFeature> FilteredVectorTileLayer::nextMatchingFeature() {
}
if (evaluate(filterExpression, extractor)) {
- return std::move(std::make_shared<VectorTileFeature>(current_feature_pbf.message(), layer));
+ return std::move(std::make_shared<VectorTileFeature>(matching_feature_pbf, layer));
}
}