GenerateRendererTask,
创建一个类的休息,而不必检索的所有数据到客户端或服务器上的一个唯一值渲染。
要使用示例,单击“生成”的范围值或生成唯一值“按钮。此更新的渲染在地图上。
代码隐藏,GenerateRendererTask用于创建一个渲染器,并且设置的GenerateRendererResultEventArgs.GenerateRendererResult.Renderer LayerDrawingOptions.Renderer在地图的显示中使用所生成的渲染器。
效果图
源代码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 <UserControl x:Class="ArcGISSilverlightSDK.GenerateRenderer" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 6 xmlns:esri="http://schemas.esri.com/arcgis/client/2009"> 7 8 <Grid x:Name="LayoutRoot" Background="White"> 9 <esri:Map x:Name="MyMap"> 10 <esri:Map.Extent> 11 <esri:Envelope XMin="-3548912" YMin="-1847469" XMax="2472012" YMax="1742990"> 12 <esri:Envelope.SpatialReference> 13 <esri:SpatialReference WKID="102009"/> 14 </esri:Envelope.SpatialReference> 15 </esri:Envelope> 16 </esri:Map.Extent> 17 <esri:ArcGISDynamicMapServiceLayer ID="USA" 18 Url="http://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer" 19 VisibleLayers="2" /> 20 </esri:Map> 21 22 <StackPanel Orientation="Vertical"> 23 <Button Content="Generate Range Values" Click="GenerateRangeValueClick" Width="140" Height="30" 24 VerticalAlignment="Top" HorizontalAlignment="Left" Margin="5"/> 25 <Button Content="Generate Unique Values" Click="GenerateUniqueValueClick" Width="140" Height="30" 26 VerticalAlignment="Top" HorizontalAlignment="Left" Margin="5"/> 27 </StackPanel> 28 </Grid> 29 </UserControl>
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 using System.Collections.Generic; 2 using System.Windows; 3 using System.Windows.Controls; 4 using System.Windows.Media; 5 using ESRI.ArcGIS.Client; 6 using ESRI.ArcGIS.Client.Tasks; 7 8 namespace ArcGISSilverlightSDK 9 { 10 public partial class GenerateRenderer : UserControl 11 { 12 GenerateRendererTask generateRendererTask; 13 14 public GenerateRenderer() 15 { 16 InitializeComponent(); 17 18 generateRendererTask = new GenerateRendererTask(); 19 generateRendererTask.Url = "http://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/2"; 20 generateRendererTask.ExecuteCompleted += generateRendererTask_ExecuteCompleted; 21 generateRendererTask.Failed += generateRendererTask_Failed; 22 } 23 24 private void GenerateRangeValueClick(object sender, RoutedEventArgs e) 25 { 26 ClassBreaksDefinition classBreaksDefinition = new ClassBreaksDefinition() 27 { 28 ClassificationField = "SQMI", 29 ClassificationMethod = ClassificationMethod.StandardDeviation, 30 BreakCount = 5, 31 StandardDeviationInterval = ESRI.ArcGIS.Client.Tasks.StandardDeviationInterval.OneQuarter 32 }; 33 classBreaksDefinition.ColorRamps.Add(new ColorRamp() 34 { 35 From = Colors.Blue, 36 To = Colors.Red, 37 Algorithm = Algorithm.HSVAlgorithm 38 }); 39 40 GenerateRendererParameters rendererParams = new GenerateRendererParameters() 41 { 42 ClassificationDefinition = classBreaksDefinition, 43 Where = "STATE_NAME NOT IN ('Alaska', 'Hawaii')" 44 }; 45 46 generateRendererTask.ExecuteAsync(rendererParams, rendererParams.Where); 47 } 48 49 private void GenerateUniqueValueClick(object sender, RoutedEventArgs e) 50 { 51 UniqueValueDefinition uniqueValueDefinition = new UniqueValueDefinition() 52 { 53 Fields = new List<string>() { "STATE_NAME" } 54 }; 55 uniqueValueDefinition.ColorRamps.Add(new ColorRamp() 56 { 57 From = Colors.Blue, 58 To = Colors.Red, 59 Algorithm = Algorithm.CIELabAlgorithm 60 }); 61 62 GenerateRendererParameters rendererParams = new GenerateRendererParameters() 63 { 64 ClassificationDefinition = uniqueValueDefinition, 65 Where = "STATE_NAME NOT IN ('Alaska', 'Hawaii')" 66 }; 67 68 generateRendererTask.ExecuteAsync(rendererParams, rendererParams.Where); 69 } 70 71 void generateRendererTask_ExecuteCompleted(object sender, GenerateRendererResultEventArgs e) 72 { 73 GenerateRendererResult rendererResult = e.GenerateRendererResult; 74 75 LayerDrawingOptionsCollection options = (MyMap.Layers["USA"] as ArcGISDynamicMapServiceLayer).LayerDrawingOptions != null 76 ? (MyMap.Layers["USA"] as ArcGISDynamicMapServiceLayer).LayerDrawingOptions : new LayerDrawingOptionsCollection(); 77 78 LayerDrawingOptions layerDrawingOptionsParcels = null; 79 80 foreach (LayerDrawingOptions drawOption in options) 81 if (drawOption.LayerID == 2) 82 { 83 layerDrawingOptionsParcels = drawOption; 84 drawOption.Renderer = rendererResult.Renderer; 85 } 86 87 if (e.UserState != null) 88 { 89 LayerDefinition layerDefinition = new LayerDefinition() 90 { 91 LayerID = 2, 92 Definition = e.UserState as string 93 }; 94 95 (MyMap.Layers["USA"] as ArcGISDynamicMapServiceLayer).LayerDefinitions = 96 new System.Collections.ObjectModel.ObservableCollection<LayerDefinition>() { layerDefinition }; 97 } 98 else 99 (MyMap.Layers["USA"] as ArcGISDynamicMapServiceLayer).LayerDefinitions = null; 100 101 102 if (layerDrawingOptionsParcels == null) 103 options.Add(new LayerDrawingOptions() { LayerID = 2, Renderer = rendererResult.Renderer }); 104 105 (MyMap.Layers["USA"] as ArcGISDynamicMapServiceLayer).LayerDrawingOptions = options; 106 (MyMap.Layers["USA"] as ArcGISDynamicMapServiceLayer).Refresh(); 107 } 108 109 void generateRendererTask_Failed(object sender, TaskFailedEventArgs e) 110 { 111 MessageBox.Show("Error: " + e.Error.Message); 112 } 113 } 114 }