using System.Collections.Generic; using System.Linq; using SharpMap; using SharpMap.Api.Layers; namespace DeltaShell.Plugins.SharpMapGis { /// /// Currently only support for chilc data item IRegularGridCoverage /// public class MapDependencyResolver { public static void RemoveItemsFromMap(Map map, object child) { var layers = GetMapLayersForData(map, child); foreach (var layer in layers) { if (map.Layers.Contains(layer)) { map.Layers.Remove(layer); } else { var groupLayer = map.GetGroupLayerContainingLayer(layer); if (groupLayer != null && !groupLayer.LayersReadOnly) { groupLayer.Layers.Remove(layer); } } } } private static IEnumerable GetMapLayersForData(Map map, object value) { foreach (var layer in map.GetAllLayers(true).ToArray()) { if ((layer is BackGroundMapLayer) && ((layer as BackGroundMapLayer).BackgroundMap == value)) { yield return layer; } } } } }