From fcacbb87ef9a808bf3554e60c978710c04cff9f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Minh=20Nguye=CC=82=CC=83n?= Date: Tue, 31 May 2016 09:03:02 -0700 Subject: [core] Store feature keys in same order as in vector tile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The keys in the vector tile may not be in alphabetical order. Building a vector of keys by looping over std::map effectively sorts the keys by alphabetical order without sorting the associated values. This change inserts keys in the same order in which they appear in the vector tile. --- src/mbgl/tile/vector_tile.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'src/mbgl/tile') diff --git a/src/mbgl/tile/vector_tile.cpp b/src/mbgl/tile/vector_tile.cpp index 4af6a12271..8a69a82314 100644 --- a/src/mbgl/tile/vector_tile.cpp +++ b/src/mbgl/tile/vector_tile.cpp @@ -191,7 +191,10 @@ VectorTileLayer::VectorTileLayer(protozero::pbf_reader layer_pbf) { features.push_back(layer_pbf.get_message()); break; case 3: // keys - keysMap.emplace(layer_pbf.get_string(), keysMap.size()); + { + auto iter = keysMap.emplace(layer_pbf.get_string(), keysMap.size()); + keys.emplace_back(std::reference_wrapper(iter.first->first)); + } break; case 4: // values values.emplace_back(parseValue(layer_pbf.get_message())); @@ -207,10 +210,6 @@ VectorTileLayer::VectorTileLayer(protozero::pbf_reader layer_pbf) { break; } } - - for (auto &pair : keysMap) { - keys.emplace_back(std::reference_wrapper(pair.first)); - } } util::ptr VectorTileLayer::getFeature(std::size_t i) const { -- cgit v1.2.1