#pragma once #include #ifdef _MSC_VER #pragma warning(push) #pragma warning(disable : 4244 4267) #endif #include #ifdef _MSC_VER #pragma warning(pop) #endif #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; std::optional getValue(const std::string& key) const override; const PropertyMap& getProperties() const override; FeatureIdentifier getID() const override; const GeometryCollection& getGeometries() const override; private: mapbox::vector_tile::feature feature; mutable std::optional lines; mutable std::optional properties; }; 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