1 #pragma once 2 3 #include <mbgl/tile/geometry_tile_data.hpp> 4 #include <mbgl/util/optional.hpp> 5 6 #include <array> 7 #include <string> 8 9 namespace mbgl { 10 11 class SymbolFeature : public GeometryTileFeature { 12 public: SymbolFeature(std::unique_ptr<GeometryTileFeature> feature_)13 SymbolFeature(std::unique_ptr<GeometryTileFeature> feature_) : 14 feature(std::move(feature_)), 15 geometry(feature->getGeometries()) // we need a mutable copy of the geometry for mergeLines() 16 {} 17 getType() const18 FeatureType getType() const override { return feature->getType(); } getValue(const std::string & key) const19 optional<Value> getValue(const std::string& key) const override { return feature->getValue(key); }; getProperties() const20 std::unordered_map<std::string,Value> getProperties() const override { return feature->getProperties(); }; getID() const21 optional<FeatureIdentifier> getID() const override { return feature->getID(); }; getGeometries() const22 GeometryCollection getGeometries() const override { return geometry; }; 23 24 std::unique_ptr<GeometryTileFeature> feature; 25 GeometryCollection geometry; 26 optional<std::u16string> text; 27 optional<std::string> icon; 28 std::size_t index; 29 }; 30 31 } // namespace mbgl 32