#pragma once #include #include namespace mbgl { class AnnotationManager; namespace style { class UpdateParameters; } // namespace style class AnnotationTile : public GeometryTile { public: AnnotationTile(const OverscaledTileID&, const style::UpdateParameters&); ~AnnotationTile() override; void setNecessity(Necessity) final; private: AnnotationManager& annotationManager; }; class AnnotationTileFeature : public GeometryTileFeature { public: AnnotationTileFeature(FeatureType, GeometryCollection, std::unordered_map properties = {{}}); FeatureType getType() const override { return type; } optional getValue(const std::string&) const override; GeometryCollection getGeometries() const override { return geometries; } 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(); } util::ptr getFeature(std::size_t i) const override { return features[i]; } std::string getName() const override { return name; }; std::vector> features; private: std::string name; }; class AnnotationTileData : public GeometryTileData { public: util::ptr getLayer(const std::string&) const override; std::unordered_map> layers; }; } // namespace mbgl