#include #include #include #include #include #include namespace mbgl { class VectorTileFeature : public GeometryTileFeature { public: VectorTileFeature(const mapbox::vector_tile::layer&, const protozero::data_view&); FeatureType getType() const override; optional getValue(const std::string& key) const override; const PropertyMap& getProperties() const override; FeatureIdentifier getID() const override; GeometryCollection getGeometries() const override; private: mapbox::vector_tile::feature feature; }; class VectorTileLayer : public GeometryTileLayer { public: VectorTileLayer(std::shared_ptr data, const protozero::data_view&); std::size_t featureCount() const override; std::unique_ptr getFeature(std::size_t i) const override; std::string getName() const override; private: std::shared_ptr data; mapbox::vector_tile::layer layer; }; class VectorTileData : public GeometryTileData { public: VectorTileData(std::shared_ptr data); std::unique_ptr clone() const override; std::unique_ptr getLayer(const std::string& name) const override; std::vector layerNames() const; private: std::shared_ptr data; mutable bool parsed = false; mutable std::map layers; }; } // namespace mbgl