#pragma once #include #include #include namespace mbgl { class AnnotationManager; class TileParameters; class AnnotationTile : public GeometryTile { public: AnnotationTile(const OverscaledTileID&, const TileParameters&); ~AnnotationTile() override; private: AnnotationManager& annotationManager; }; class AnnotationTileFeatureData; class AnnotationTileFeature : public GeometryTileFeature { public: AnnotationTileFeature(std::shared_ptr); ~AnnotationTileFeature() override; FeatureType getType() const override; optional getValue(const std::string&) const override; optional getID() const override; GeometryCollection getGeometries() const override; private: std::shared_ptr data; }; class AnnotationTileLayerData; class AnnotationTileLayer : public GeometryTileLayer { public: AnnotationTileLayer(std::shared_ptr); std::size_t featureCount() const override; std::unique_ptr getFeature(std::size_t i) const override; std::string getName() const override; void addFeature(const AnnotationID, FeatureType, GeometryCollection, std::unordered_map properties = { {} }); private: std::shared_ptr layer; }; class AnnotationTileData : public GeometryTileData { public: std::unique_ptr clone() const override; std::unique_ptr getLayer(const std::string&) const override; std::unique_ptr addLayer(const std::string&); private: std::unordered_map> layers; }; } // namespace mbgl