调GP服务,并对缓冲的结果进行渲染,将渲染的结果用listbox进行绑定,选定某结果进行zoomto,先看代码好了
GP服务(对地图上特定地块缓冲附近的地快)是在点击button事件下发生的。
这是该GP服务的相关属性
关于怎么调这个GP服务,请看代码:
//调GP
FeatureSet fs = new FeatureSet(); fs.Features.Add(blocks[0].Graphic); Geoprocessor geoprocessorTask = new Geoprocessor("GP服务地址"); List<GPParameter> parameters = new List<GPParameter>(); parameters.Add(new GPFeatureRecordSetLayer("Input_Features", fs)); geoprocessorTask.OutputSpatialReference = this.Map.SpatialReference; geoprocessorTask.StatusUpdated += new EventHandler<JobInfoEventArgs>(geoprocessorTask_StatusUpdated); geoprocessorTask.SubmitJobAsync(parameters); geoprocessorTask.JobCompleted += (o, e1) => { List<Graphic> bufferGraphics = new List<Graphic>(); geoprocessorTask.GetResultDataCompleted += (s1, ev1) => { GraphicsLayer layer = new GraphicsLayer(); layer.ClearGraphics(); //layer.Renderer = LayoutRoot.Resources["MyUniqueValueRenderer"] as IRenderer; switch (ev1.Parameter.Name) { case "BufferNzy": GPFeatureRecordSetLayer bufferNZY = ev1.Parameter as GPFeatureRecordSetLayer; geoprocessorTask.GetResultDataAsync(e1.JobInfo.JobId, "BufferGd"); foreach (Graphic g1 in bufferNZY.FeatureSet.Features) { //渲染
g1.Symbol = LayoutRoot.Resources["BufferNzySymbol"] as Symbol; layer.Graphics.Add(g1); string d = bufferNZY.FeatureSet.ToJson(); MessageBox.Show(d); } bufferGraphics.AddRange(bufferNZY.FeatureSet.Features); break; case "BufferGd": GPFeatureRecordSetLayer bufferGD = ev1.Parameter as GPFeatureRecordSetLayer; foreach (Graphic g2 in bufferGD.FeatureSet.Features) { //渲染
g2.Symbol = LayoutRoot.Resources["BufferNzySymbol"] as Symbol; layer.Graphics.Add(g2); } bufferGraphics.AddRange(bufferGD.FeatureSet.Features); this.BufferList.ItemsSource = null; this.BufferList.ItemsSource = bufferGraphics; break; } Map.Layers.Add(layer); }; geoprocessorTask.GetResultDataAsync(e1.JobInfo.JobId, "BufferNzy"); };
前台代码:
<esri:SimpleFillSymbol x:Key="BufferNzySymbol" Fill="#66FFFF00" BorderBrush="Yellow" BorderThickness="2" /> <esri:SimpleFillSymbol x:Key="BufferGdSymbol" Fill="#66FF0000" BorderBrush="Red" BorderThickness="2" />
<sdk:TabItem Header="缓冲区列表" ToolTipService.ToolTip="缓冲区列表" x:Name="BufferTabItem" Template="{StaticResource BlockTabHeaderControlTemplate}"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="2" /> <RowDefinition Height="*" x:Name="BufferGrid"/> <RowDefinition Height="1" /> </Grid.RowDefinitions> <TextBlock Text="缓冲区列表" Margin="5" FontSize="14" /> <Rectangle Grid.Row="1" Fill="{StaticResource BackstageAccentLineBrush}" /> <ListBox x:Name="BufferList" Grid.Row="2" SelectionChanged="BufferList_SelectionChanged"> <ListBox.ItemTemplate> <DataTemplate> <TextBlock MouseLeftButtonDown="TextBlock_MouseLeftButtonDown" Text="{Binding Attributes[DK_XH]}" VerticalAlignment="Center" HorizontalAlignment="Left"/> </DataTemplate> </ListBox.ItemTemplate> </ListBox> </Grid> </sdk:TabItem>
最后的效果就是: