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