diff --git a/include/llmr/style/style.hpp b/include/llmr/style/style.hpp index 73ad6d6bd..fd5f7e222 100644 --- a/include/llmr/style/style.hpp +++ b/include/llmr/style/style.hpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include @@ -38,7 +39,7 @@ public: public: std::string id; StyleBucket::Ptr bucket; - std::unordered_map styles; + std::map styles; StyleProperties style; std::unique_ptr rasterize; std::shared_ptr layers; diff --git a/src/style/style.cpp b/src/style/style.cpp index d0077d719..64cdfd659 100644 --- a/src/style/style.cpp +++ b/src/style/style.cpp @@ -164,14 +164,15 @@ void Style::cascade(const std::shared_ptr &layers, float z) { layer->style = resetClassProperties(*layer); // Apply default class (if exists) - auto default_it = layer->styles.find(""); + auto default_it = layer->styles.find(ClassID::Default); if (default_it != layer->styles.end()) { applyClassProperties(layer->style, default_it->second, z); } // Apply overriding classes in order. for (const std::string &class_name : appliedClasses) { - auto class_it = layer->styles.find(class_name); + const ClassID class_id = ClassDictionary::Lookup(class_name); + auto class_it = layer->styles.find(class_id); if (class_it != layer->styles.end()) { applyClassProperties(layer->style, class_it->second, z); } diff --git a/src/style/style_parser.cpp b/src/style/style_parser.cpp index 34aa7f222..5d5737567 100644 --- a/src/style/style_parser.cpp +++ b/src/style/style_parser.cpp @@ -469,9 +469,10 @@ void StyleParser::parseStyles(JSVal value, std::shared_ptr &layer) { const std::string name { itr->name.GetString(), itr->name.GetStringLength() }; if (name == "style") { - parseStyle(replaceConstant(itr->value), layer->styles[""]); + parseStyle(replaceConstant(itr->value), layer->styles[ClassID::Default]); } else if (name.compare(0, 6, "style.") == 0 && name.length() > 6) { - parseStyle(replaceConstant(itr->value), layer->styles[name.substr(6)]); + const ClassID class_id = ClassDictionary::Lookup(name.substr(6)); + parseStyle(replaceConstant(itr->value), layer->styles[class_id]); } } }