#ifndef MBGL_MAP_ANNOTATIONS #define MBGL_MAP_ANNOTATIONS #include #include #include #include #include #include #include #include #include #include namespace mbgl { class Annotation; class Map; class LiveTile; using AnnotationIDs = std::vector; class AnnotationManager : private util::noncopyable { public: AnnotationManager(); ~AnnotationManager(); void setDefaultPointAnnotationSymbol(const std::string& symbol); std::pair, AnnotationIDs> addPointAnnotations( const std::vector&, const std::vector& symbols, const Map&); std::vector removeAnnotations(const AnnotationIDs&); AnnotationIDs getAnnotationsInBounds(const LatLngBounds&, const Map&) const; LatLngBounds getBoundsForAnnotations(const AnnotationIDs&) const; const LiveTile* getTile(Tile::ID const& id); static const std::string layerID; private: inline uint32_t nextID(); static vec2 projectPoint(const LatLng& point); private: mutable std::mutex mtx; std::string defaultPointAnnotationSymbol; std::map> annotations; std::map>> annotationTiles; uint32_t nextID_ = 0; }; } #endif