private async Task GenerateRenderer(GenerateRendererParameters rendererParam) { GenerateRendererResult result = await generateRendererTask.GenerateRendererAsync(rendererParam); LayerDrawingOptions layerDrawingOptions = null; LayerDrawingOptionCollection options = null; // If this is the first execution of this sample create a new LayerDrawingOptionsCollection if (((ArcGISDynamicMapServiceLayer)map.Layers["USA"]).LayerDrawingOptions == null) { options = new LayerDrawingOptionCollection(); // Add a new LayerDrawingOptions for layer ID 2 using the generated renderer options.Add(new LayerDrawingOptions() { LayerID = 2, Renderer = result.Renderer }); } else { // Otherwise the layer will have an existing LayerDrawingOptionsCollection from a previous button click options = ((ArcGISDynamicMapServiceLayer)map.Layers["USA"]).LayerDrawingOptions; // Iterate over the LayerDrawingOptionsCollection. // For layer ID 2 get the existing LayerDrawingOptions object and apply the newly generated renderer foreach (LayerDrawingOptions drawOption in options) { if (drawOption.LayerID == 2) { layerDrawingOptions = drawOption; drawOption.Renderer = result.Renderer; } } } // Retrieve the GenerateRendererParameters Where clause and create a new LayerDefinition for layer ID 2 if (!string.IsNullOrEmpty(rendererParam.Where)) { LayerDefinition layerDefinition = new LayerDefinition() { LayerID = 2, Definition = rendererParam.Where }; ((ArcGISDynamicMapServiceLayer)map.Layers["USA"]).LayerDefinitions = new ObservableCollection <LayerDefinition>() { layerDefinition }; } // Apply the updated LayerDrawingOptionsCollection to the LayerDrawingOptions property on the layer ((ArcGISDynamicMapServiceLayer)map.Layers["USA"]).LayerDrawingOptions = options; }
void generateRendererTask_ExecuteCompleted(object sender, GenerateRendererResultEventArgs e) { GenerateRendererResult rendererResult = e.GenerateRendererResult; LayerDrawingOptionsCollection options = (MyMap.Layers["USA"] as ArcGISDynamicMapServiceLayer).LayerDrawingOptions != null ? (MyMap.Layers["USA"] as ArcGISDynamicMapServiceLayer).LayerDrawingOptions : new LayerDrawingOptionsCollection(); LayerDrawingOptions layerDrawingOptionsParcels = null; foreach (LayerDrawingOptions drawOption in options) { if (drawOption.LayerID == 2) { layerDrawingOptionsParcels = drawOption; drawOption.Renderer = rendererResult.Renderer; } } if (e.UserState != null) { LayerDefinition layerDefinition = new LayerDefinition() { LayerID = 2, Definition = e.UserState as string }; (MyMap.Layers["USA"] as ArcGISDynamicMapServiceLayer).LayerDefinitions = new System.Collections.ObjectModel.ObservableCollection <LayerDefinition>() { layerDefinition }; } else { (MyMap.Layers["USA"] as ArcGISDynamicMapServiceLayer).LayerDefinitions = null; } if (layerDrawingOptionsParcels == null) { options.Add(new LayerDrawingOptions() { LayerID = 2, Renderer = rendererResult.Renderer }); } (MyMap.Layers["USA"] as ArcGISDynamicMapServiceLayer).LayerDrawingOptions = options; (MyMap.Layers["USA"] as ArcGISDynamicMapServiceLayer).Refresh(); }