#pragma once #include #include #include namespace mbgl { class AnnotationManager; class TileParameters; class AnnotationTile : public GeometryTile { public: AnnotationTile(const OverscaledTileID&, const TileParameters&); ~AnnotationTile() override; void setNecessity(Necessity) final; private: AnnotationManager& annotationManager; }; class AnnotationTileFeature : public GeometryTileFeature { public: AnnotationTileFeature(AnnotationID, FeatureType, GeometryCollection, std::unordered_map properties = {{}}); FeatureType getType() const override { return type; } optional getValue(const std::string&) const override; optional getID() const override { return { static_cast(id) }; } GeometryCollection getGeometries() const override { return geometries; } const AnnotationID id; const FeatureType type; const std::unordered_map properties; const GeometryCollection geometries; }; class AnnotationTileLayer : public GeometryTileLayer { public: AnnotationTileLayer(std::string); std::size_t featureCount() const override { return features.size(); } std::unique_ptr getFeature(std::size_t i) const override { return std::make_unique(features.at(i)); } std::string getName() const override { return name; }; std::vector features; private: std::string name; }; class AnnotationTileData : public GeometryTileData { public: std::unique_ptr clone() const override; const GeometryTileLayer* getLayer(const std::string&) const override; std::unordered_map layers; }; } // namespace mbgl