diff --git a/src/mbgl/annotation/annotation_manager.cpp b/src/mbgl/annotation/annotation_manager.cpp index e82dbfe48..dd2579267 100644 --- a/src/mbgl/annotation/annotation_manager.cpp +++ b/src/mbgl/annotation/annotation_manager.cpp @@ -131,7 +131,9 @@ void AnnotationManager::updateStyle(Style& style) { } for (const auto& layer : obsoleteShapeAnnotationLayers) { - style.removeLayer(layer); + if (style.getLayer(layer)) { + style.removeLayer(layer); + } } obsoleteShapeAnnotationLayers.clear(); diff --git a/test/api/annotations.cpp b/test/api/annotations.cpp index a9667c434..737c5314c 100644 --- a/test/api/annotations.cpp +++ b/test/api/annotations.cpp @@ -164,6 +164,18 @@ TEST(Annotations, RemoveShape) { util::write_file("test/output/remove_shape.png", renderPNG(map)); } +TEST(Annotations, ImmediateRemoveShape) { + auto display = std::make_shared(); + HeadlessView view(display, 1); + DefaultFileSource fileSource(nullptr); + Map map(view, fileSource, MapMode::Still); + + map.removeAnnotation(map.addShapeAnnotation(ShapeAnnotation({}, {}))); + map.setStyleJSON(util::read_file("test/fixtures/api/empty.json"), ""); + + renderPNG(map); +} + TEST(Annotations, SwitchStyle) { auto display = std::make_shared(); HeadlessView view(display, 1);