summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/mbgl/map/map.hpp4
-rw-r--r--src/mbgl/map/map.cpp24
2 files changed, 28 insertions, 0 deletions
diff --git a/include/mbgl/map/map.hpp b/include/mbgl/map/map.hpp
index 6c478c17f0..914c2cd0b3 100644
--- a/include/mbgl/map/map.hpp
+++ b/include/mbgl/map/map.hpp
@@ -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;
diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp
index 1c376e40aa..3ff02aae71 100644
--- a/src/mbgl/map/map.cpp
+++ b/src/mbgl/map/map.cpp
@@ -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 {