#ifndef MBGL_ANNOTATION_MANAGER #define MBGL_ANNOTATION_MANAGER #include #include #include #include #include #include #include #include #include #include namespace mbgl { class PointAnnotation; class ShapeAnnotation; class AnnotationTile; class AnnotationTileMonitor; class Style; class AnnotationManager : private util::noncopyable { public: AnnotationManager(float pixelRatio); ~AnnotationManager(); AnnotationIDs addPointAnnotations(const std::vector&, const uint8_t maxZoom); AnnotationIDs addShapeAnnotations(const std::vector&, const uint8_t maxZoom); void updatePointAnnotation(const AnnotationID&, const PointAnnotation&, const uint8_t maxZoom); void removeAnnotations(const AnnotationIDs&); AnnotationIDs getPointAnnotationsInBounds(const LatLngBounds&) const; void addIcon(const std::string& name, std::shared_ptr); void removeIcon(const std::string& name); double getTopOffsetPixelsForIcon(const std::string& name); SpriteAtlas& getSpriteAtlas() { return spriteAtlas; } void updateStyle(Style&); void addTileMonitor(AnnotationTileMonitor&); void removeTileMonitor(AnnotationTileMonitor&); static const std::string SourceID; static const std::string PointLayerID; private: std::unique_ptr getTile(const TileID&); AnnotationID nextID = 0; PointAnnotationImpl::Tree pointTree; PointAnnotationImpl::Map pointAnnotations; ShapeAnnotationImpl::Map shapeAnnotations; std::vector obsoleteShapeAnnotationLayers; std::set monitors; SpriteStore spriteStore; SpriteAtlas spriteAtlas; }; } // namespace mbgl #endif