private static Layers FindMapLayersFromTOC(IServiceMap map, string id) { if (map.TOC == null) { return(new Layers()); } ITOC toc = map.TOC; foreach (ITOCElement tocElement in toc.Elements) { if (tocElement == null || tocElement.ElementType != TOCElementType.Layer || tocElement.Layers.Count == 0 ) { continue; } foreach (ILayer layer in tocElement.Layers) { if (layer.SID == id) { Layers layers = new Layers(tocElement.Layers); layers.Title = tocElement.Name; layers.TocElement = tocElement; return(layers); } } } return(new Layers()); }
private static List <Layers> MapLayersFromTOC(IServiceMap map) { List <Layers> layersList = new List <Layers>(); if (map.TOC == null) { return(layersList); } ITOC toc = map.TOC; foreach (ITOCElement tocElement in toc.Elements) { if (tocElement == null || tocElement.ElementType != TOCElementType.Layer || tocElement.Layers.Count == 0 ) { continue; } Layers layers = new Layers(); layers.Title = tocElement.Name; layers.TocElement = tocElement; layers.GroupName = ParentGroupName(tocElement); foreach (ILayer layer in tocElement.Layers) { if (layer == null) { continue; } layers.Add(layer); } if (layers.Count > 0) { layersList.Add(layers); } } return(layersList); }
public void Load(IPersistStream stream) { string mapName = (string)stream.Load("map", ""); if (_maps != null) { foreach (IMap map in _maps) { if (map.Name == mapName) { this.Map = (Map)map; break; } } } double?minx = (double?)stream.Load("minx"); if (minx != null) { _envelope = new Envelope( (double)minx, (double)stream.Load("miny", 0.0), (double)stream.Load("maxx", 0.0), (double)stream.Load("maxy", 0.0)); } if (this.Map != null) { TOC objInst = new TOC(this.Map); objInst.Modifier = TOCModifier.Private; _toc = (TOC)stream.Load("ITOC", null, objInst); if (_toc == null) { objInst.Dispose(); } _displayRotation = (double)stream.Load("DisplayRotation", (double)0.0); } }
private static Layers FindMapLayersFromTOC(IServiceMap map, string id, List <ILayer> clonedLayers) { if (map.TOC == null) { return(new Layers()); } ITOC toc = map.TOC; foreach (ITOCElement tocElement in toc.Elements) { if (tocElement == null || tocElement.ElementType != TOCElementType.Layer || tocElement.Layers.Count == 0 ) { continue; } foreach (ILayer layer in tocElement.Layers) { if (layer.SID == id) { Layers layers = new Layers(); foreach (ILayer origLayer in tocElement.Layers) { layers.Add(GetLayerByID(clonedLayers, origLayer.ID)); } layers.Title = tocElement.Name; layers.TocElement = tocElement; layers.GroupName = ParentGroupName(tocElement); return(layers); } } } return(new Layers()); }
async public Task <IBitmap> Legend() { ITOC toc = _toc.Clone(this) as ITOC; #region WebServiceLayer List <IWebServiceLayer> webServices; if (this.TOC != null) { webServices = ListOperations <IWebServiceLayer> .Swap(this.TOC.VisibleWebServiceLayers); } else { webServices = new List <IWebServiceLayer>(); foreach (IDatasetElement layer in this.MapElements) { if (!(layer is IWebServiceLayer)) { continue; } if (((ILayer)layer).Visible) { webServices.Add((IWebServiceLayer)layer); } } } foreach (IWebServiceLayer element in webServices) { if (!(element is ILayer)) { continue; } if (!element.Visible) { continue; } IWebServiceLayer wsLayer = LayerFactory.Create(element.WebServiceClass.Clone() as IClass, element) as IWebServiceLayer; if (wsLayer == null || wsLayer.WebServiceClass == null) { continue; } if (BeforeRenderLayers != null) { // layer im geklonten TOC austauschen... // Besser layer als layer.Class verwendenden, weil Class von mehrerenen Layern // verwendet werden kann zB bei gesplitteten Layern... //ITOCElement tocElement = toc.GetTOCElement(element.Class); ITOCElement tocElement = toc.GetTOCElement(element); tocElement.RemoveLayer(element); tocElement.AddLayer(wsLayer); List <ILayer> modLayers = new List <ILayer>(); foreach (IWebServiceTheme theme in wsLayer.WebServiceClass.Themes) { if (theme is ILayer) { modLayers.Add(theme); } } BeforeRenderLayers(this, modLayers); } } #endregion List <ILayer> layers = new List <ILayer>(); if (this.TOC != null) { if (this.GetType().Equals(typeof(ServiceMap))) { layers = ListOperations <ILayer> .Swap(this.TOC.Layers); } else { layers = ListOperations <ILayer> .Swap(this.TOC.VisibleLayers); } } else { layers = new List <ILayer>(); foreach (IDatasetElement layer in this.MapElements) { if (!(layer is ILayer)) { continue; } if (((ILayer)layer).Visible) { layers.Add((ILayer)layer); } } } if (BeforeRenderLayers != null) { // // Kopie der Original Layer erstellen // ACHTUNG: Renderer werden nicht kopiert! // dürfen in BeforeRenderLayers nicht verändert werden... // Eine zuweisung eines neuen Renderers ist jedoch legitim. // List <ILayer> modLayers = new List <ILayer>(); foreach (IDatasetElement element in layers) { if (!(element is ILayer) || element is IWebServiceTheme) { continue; } ILayer layer = (ILayer)element; if (layer.MinimumScale > 1 && layer.MinimumScale > this.mapScale) { continue; } if (layer.MaximumScale > 1 && layer.MaximumScale < this.mapScale) { continue; } ILayer newLayer = null; modLayers.Add(newLayer = LayerFactory.Create(layer.Class, layer)); // layer im geklonten TOC austauschen... if (element is ILayer && newLayer != null) { // Besser layer als layer.Class verwendenden, weil Class von mehrerenen Layern // verwendet werden kann zB bei gesplitteten Layern... //ITOCElement tocElement = toc.GetTOCElement(layer.Class); ITOCElement tocElement = toc.GetTOCElement(layer); tocElement.RemoveLayer(element as ILayer); tocElement.AddLayer(newLayer); } } BeforeRenderLayers(this, modLayers); layers = modLayers; } return(await toc.Legend()); }