summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno de Oliveira Abinader <bruno@mapbox.com>2016-04-21 14:40:01 +0300
committerBruno de Oliveira Abinader <bruno@mapbox.com>2016-04-21 15:09:54 +0300
commit8ec875b87c387713d7e4df5c90e6cac7669ed38b (patch)
treea0814900144cc3f2088cbdca7f1577a2853f2862
parent2ec1d82b158a1d4322ed2d7453b95587098b9e93 (diff)
downloadqtlocation-mapboxgl-8ec875b87c387713d7e4df5c90e6cac7669ed38b.tar.gz
[core] Do not clear custom layers upon style switch
-rw-r--r--src/mbgl/style/style.cpp4
-rw-r--r--test/api/custom_layer.cpp4
2 files changed, 7 insertions, 1 deletions
diff --git a/src/mbgl/style/style.cpp b/src/mbgl/style/style.cpp
index 010f0aeafd..b239ac20dc 100644
--- a/src/mbgl/style/style.cpp
+++ b/src/mbgl/style/style.cpp
@@ -70,7 +70,9 @@ Style::Style(FileSource& fileSource_, float pixelRatio)
void Style::setJSON(const std::string& json, const std::string&) {
sources.clear();
- layers.clear();
+ layers.erase(std::remove_if(layers.begin(), layers.end(), [](const auto& layer) {
+ return !layer->template is<CustomLayer>();
+ }), layers.end());
classes.clear();
StyleParser parser;
diff --git a/test/api/custom_layer.cpp b/test/api/custom_layer.cpp
index 4ad25bbfd5..beffa749d1 100644
--- a/test/api/custom_layer.cpp
+++ b/test/api/custom_layer.cpp
@@ -90,4 +90,8 @@ TEST(CustomLayer, Basic) {
}, new TestLayer());
test::checkImage("test/fixtures/custom_layer/basic", test::render(map));
+
+ // Custom layer should be preserved when switching styles
+ map.setStyleJSON(util::read_file("test/fixtures/api/empty.json"), "");
+ test::checkImage("test/fixtures/custom_layer/basic", test::render(map));
}