[core] Add interface to add sprites to the style

Unlike annotations, they will go away when we change the style.
This commit is contained in:
Thiago Marcos P. Santos
2016-09-13 18:32:45 -07:00
parent e8d47269f8
commit 486bdddb23
2 changed files with 28 additions and 0 deletions

View File

@@ -161,6 +161,10 @@ public:
void addLayer(std::unique_ptr<style::Layer>, const optional<std::string>& beforeLayerID = {});
void removeLayer(const std::string& layerID);
// Add image, bound to the style
void addImage(const std::string&, std::unique_ptr<const SpriteImage>);
void removeImage(const std::string&);
// Defaults
std::string getStyleName() const;
LatLng getDefaultLatLng() const;

View File

@@ -823,6 +823,30 @@ void Map::removeLayer(const std::string& id) {
impl->view.deactivate();
}
void Map::addImage(const std::string& name, std::unique_ptr<const SpriteImage> image) {
if (!impl->style) {
return;
}
impl->styleMutated = true;
impl->style->spriteAtlas->setSprite(name, std::move(image));
impl->style->spriteAtlas->updateDirty();
update(Update::Repaint);
}
void Map::removeImage(const std::string& name) {
if (!impl->style) {
return;
}
impl->styleMutated = true;
impl->style->spriteAtlas->removeSprite(name);
impl->style->spriteAtlas->updateDirty();
update(Update::Repaint);
}
#pragma mark - Defaults
std::string Map::getStyleName() const {