#ifndef MBGL_ANNOTATION_TILE #define MBGL_ANNOTATION_TILE #include #include #include #include namespace mbgl { 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: std::size_t featureCount() const override { return features.size(); } util::ptr getFeature(std::size_t i) const override { return features[i]; } std::vector> features; }; class AnnotationTile : public GeometryTile { public: util::ptr getLayer(const std::string&) const override; std::map> layers; }; class MapData; class AnnotationTileMonitor : public GeometryTileMonitor { public: // TODO: should just take AnnotationManager&, but we need to eliminate util::exclusive from MapData first. AnnotationTileMonitor(const TileID&, MapData&); ~AnnotationTileMonitor(); void update(std::unique_ptr); std::unique_ptr monitorTile(const GeometryTileMonitor::Callback&) override; TileID tileID; private: MapData& data; GeometryTileMonitor::Callback callback; }; } // namespace mbgl #endif