diff options
author | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2016-10-12 09:54:25 +0300 |
---|---|---|
committer | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2016-10-12 18:58:22 +0300 |
commit | 436a22efe97500cb314ca8d9848fa405e6cb9af7 (patch) | |
tree | 19fcda0cf8d2780dcda5da8681c50dee4ae3e700 /src | |
parent | 0fc7fd11d9b158751561eb1ac8f67fe8c1fda93f (diff) | |
download | qtlocation-mapboxgl-436a22efe97500cb314ca8d9848fa405e6cb9af7.tar.gz |
[core] Skip duplicated IDs when querying point annotations
Diffstat (limited to 'src')
-rw-r--r-- | src/mbgl/map/map.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp index 95958602bc..bf2462e2ab 100644 --- a/src/mbgl/map/map.cpp +++ b/src/mbgl/map/map.cpp @@ -750,13 +750,15 @@ std::vector<Feature> Map::queryRenderedFeatures(const ScreenBox& box, const opti AnnotationIDs Map::queryPointAnnotations(const ScreenBox& box) { auto features = queryRenderedFeatures(box, {{ AnnotationManager::PointLayerID }}); - AnnotationIDs ids; - ids.reserve(features.size()); + std::set<AnnotationID> set; for (auto &feature : features) { assert(feature.id); assert(*feature.id <= std::numeric_limits<AnnotationID>::max()); - ids.push_back(static_cast<AnnotationID>(feature.id->get<uint64_t>())); + set.insert(static_cast<AnnotationID>(feature.id->get<uint64_t>())); } + AnnotationIDs ids; + ids.reserve(set.size()); + std::move(set.begin(), set.end(), std::back_inserter(ids)); return ids; } |