ArcGIS API for Silverlight 3.0更新(2)GenerateRendererTask

GenerateRendererTask,

创建一个类的休息,而不必检索的所有数据到客户端或服务器上的一个唯一值渲染。

要使用示例,单击“生成”的范围值或生成唯一值按钮。此更新的渲染在地图上。
代码隐藏,GenerateRendererTask用于创建一个渲染器,并且设置的GenerateRendererResultEventArgs.GenerateRendererResult.Renderer LayerDrawingOptions.Renderer在地图的显示中使用所生成的渲染器。

效果图

 

源代码

前端XAML
 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>

 

C#代码
  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 }

在线DEMO

 

 

 

转载于:https://www.cnblogs.com/jstangwh/archive/2012/10/18/2730284.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值