public void AddLayer(ArcImsLayer layer, string query, LayerQueryMode queryMode, Renderer renderer) { int nextLayerNo = 0; // layers from other services and data frames are not allowed if (layer.DataFrame != DataFrame) { throw new ArcImsException("The specified ArcImsLayer is not in the same service and dataframe as the ArcImsMap."); } // queries and renderers are only allow on feature layers SpatialQuery spatialQuery = null; if (!String.IsNullOrEmpty(query) && queryMode != LayerQueryMode.None) { if (layer.Type != CommonLayerType.Feature) { throw new ArcImsException("Definition and selection queries are only allowed on feature layers"); } spatialQuery = new SpatialQuery(query); } if (renderer != null && layer.Type != CommonLayerType.Feature) { throw new ArcImsException("Custom renderers are only allowed on feature layers"); } // add all group layers that contain this layer ArcImsLayer parent = layer.Parent as ArcImsLayer; while (parent != null) { AddLayer(new LayerDef(parent.ID)); parent = parent.Parent as ArcImsLayer; } // handle queries and renderers LayerDef layerDef = new LayerDef(layer.ID); if (spatialQuery != null) { if (queryMode == LayerQueryMode.Definition) { layerDef.Query = spatialQuery; layerDef.Renderer = renderer; } if (queryMode == LayerQueryMode.Selection) { Layer axlLayer = new Layer(String.Format("__{0}", nextLayerNo++)); axlLayer.Query = spatialQuery; axlLayer.Dataset = new Dataset(layer.ID); if (_service.IsArcMap) { layerDef.Renderer = renderer; } else { axlLayer.Renderer = renderer; } AddLayer(axlLayer); } } else { layerDef.Renderer = renderer; } AddLayer(layerDef); }
public void AddLayer(ArcImsLayer layer, string query, LayerQueryMode queryMode) { AddLayer(layer, query, queryMode, null); }