fixes #1675: abstract annotation tile refresh check/render; trigger post-sprite/sprite store load
This commit is contained in:
@@ -52,6 +52,7 @@ public:
|
||||
~AnnotationManager();
|
||||
|
||||
void markStaleTiles(std::unordered_set<TileID, TileID::Hash>);
|
||||
size_t getStaleTileCount() const { return staleTiles.size(); }
|
||||
std::unordered_set<TileID, TileID::Hash> resetStaleTiles();
|
||||
|
||||
void setDefaultPointAnnotationSymbol(const std::string& symbol);
|
||||
|
||||
@@ -142,9 +142,11 @@ void MapContext::loadStyleJSON(const std::string& json, const std::string& base)
|
||||
|
||||
updateFlags |= Update::DefaultTransition | Update::Classes | Update::Zoom;
|
||||
asyncUpdate->send();
|
||||
}
|
||||
|
||||
auto staleTiles = data.getAnnotationManager()->resetStaleTiles();
|
||||
if (!staleTiles.empty()) {
|
||||
void MapContext::updateAnnotationTilesIfNeeded() {
|
||||
if (data.getAnnotationManager()->getStaleTileCount()) {
|
||||
auto staleTiles = data.getAnnotationManager()->resetStaleTiles();
|
||||
updateAnnotationTiles(staleTiles);
|
||||
}
|
||||
}
|
||||
@@ -417,4 +419,8 @@ void MapContext::onResourceLoadingFailed(std::exception_ptr error) {
|
||||
}
|
||||
}
|
||||
|
||||
void MapContext::onSpriteStoreLoaded() {
|
||||
updateAnnotationTilesIfNeeded();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -54,6 +54,7 @@ public:
|
||||
bool isLoaded() const;
|
||||
|
||||
double getTopOffsetPixelsForAnnotationSymbol(const std::string& symbol);
|
||||
void updateAnnotationTilesIfNeeded();
|
||||
void updateAnnotationTiles(const std::unordered_set<TileID, TileID::Hash>&);
|
||||
|
||||
void setSourceTileCacheSize(size_t size);
|
||||
@@ -66,6 +67,7 @@ public:
|
||||
// Style::Observer implementation.
|
||||
void onTileDataChanged() override;
|
||||
void onResourceLoadingFailed(std::exception_ptr error) override;
|
||||
void onSpriteStoreLoaded() override;
|
||||
|
||||
private:
|
||||
// Update the state indicated by the accumulated Update flags, then render.
|
||||
|
||||
@@ -190,6 +190,10 @@ void Style::onSpriteLoaded(const Sprites& sprites) {
|
||||
// Add all sprite images to the SpriteStore object
|
||||
spriteStore->setSprites(sprites);
|
||||
|
||||
if (observer) {
|
||||
observer->onSpriteStoreLoaded();
|
||||
}
|
||||
|
||||
shouldReparsePartialTiles = true;
|
||||
emitTileDataChanged();
|
||||
}
|
||||
|
||||
@@ -39,6 +39,7 @@ public:
|
||||
virtual ~Observer() = default;
|
||||
|
||||
virtual void onTileDataChanged() = 0;
|
||||
virtual void onSpriteStoreLoaded() = 0;
|
||||
virtual void onResourceLoadingFailed(std::exception_ptr error) = 0;
|
||||
};
|
||||
|
||||
|
||||
@@ -63,6 +63,10 @@ public:
|
||||
callback_(error);
|
||||
}
|
||||
|
||||
void onSpriteStoreLoaded() override {
|
||||
// no-op
|
||||
}
|
||||
|
||||
private:
|
||||
MapData data_;
|
||||
Transform transform_;
|
||||
|
||||
Reference in New Issue
Block a user