调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>

最后的效果就是: