' If buffer spatial reference is GCS and unit is linear, geometry service will do geodesic buffering Dim bufferParams As New ESRI.ArcGIS.Client.Tasks.BufferParameters() With { .BufferSpatialReference = New SpatialReference(4326), .OutSpatialReference = MyMap.SpatialReference, .Unit = LinearUnit.Meter } bufferParams.Distances.Add(0.05) bufferParams.Features.Add(clickGraphic) _geometryService.BufferAsync(bufferParams)
_pointAndBufferGraphicsLayer = TryCast(MyMap.Layers("MyGraphicsLayerBuffer"), GraphicsLayer) _resultsGraphicsLayer = TryCast(MyMap.Layers("MyGraphicsLayerBufferResults"), GraphicsLayer) '==================================== Dim featureSet As FeatureSet = args.FeatureSet If featureSet Is Nothing OrElse featureSet.Features.Count < 1 Then MessageBox.Show("No features retured from query") Return End If If featureSet IsNot Nothing AndAlso featureSet.Features.Count > 0 Then For Each feature As Graphic In featureSet.Features Dim selectedFeature As Graphic = featureSet.Features(0) Dim clickGraphic As New Graphic() clickGraphic.Symbol = TryCast(LayoutRoot.Resources("DefaultMarkerSymbol2"), ESRI.ArcGIS.Client.Symbols.Symbol) 'clickGraphic.Geometry = feature.Geometry clickGraphic.Geometry = selectedFeature.Geometry
Private Sub QueryTask_ExecuteCompletedBuffer1(ByVal sender As Object, ByVal args As ESRI.ArcGIS.Client.Tasks.QueryEventArgs) 'Private Sub QueryTask_ExecuteCompletedBuffer2(ByVal sender As Object, ByVal args As ESRI.ArcGIS.Client.Tasks.GraphicsEventArgs) _geometryService = New GeometryService("http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer") AddHandler _geometryService.BufferCompleted, AddressOf GeometryService_BufferCompleted2 AddHandler _geometryService.Failed, AddressOf GeometryService_Failed2 _queryTask = New QueryTask("http://gis.logis.org/arcgis/rest/services/MG_Test_WGS84/MapServer/1") AddHandler _queryTask.ExecuteCompleted, AddressOf QueryTask_ExecuteCompletedBuffer2 AddHandler _queryTask.Failed, AddressOf QueryTask_Failed2 _pointAndBufferGraphicsLayer = TryCast(MyMap.Layers("MyGraphicsLayerBuffer"), GraphicsLayer) _resultsGraphicsLayer = TryCast(MyMap.Layers("MyGraphicsLayerBufferResults"), GraphicsLayer) Dim featureSet As FeatureSet = args.FeatureSet If featureSet Is Nothing OrElse featureSet.Features.Count < 1 Then MessageBox.Show("No features retured from query") Return End If If featureSet IsNot Nothing AndAlso featureSet.Features.Count > 0 Then For Each feature As Graphic In featureSet.Features Dim clickGraphic As New Graphic() clickGraphic.Symbol = TryCast(LayoutRoot.Resources("DefaultMarkerSymbol2"), ESRI.ArcGIS.Client.Symbols.Symbol) clickGraphic.Geometry = feature.Geometry ' Input spatial reference for buffer operation defined by first feature of input geometry array clickGraphic.Geometry.SpatialReference = MyMap.SpatialReference _pointAndBufferGraphicsLayer.ClearGraphics() _resultsGraphicsLayer.ClearGraphics() clickGraphic.SetZIndex(2) _pointAndBufferGraphicsLayer.Graphics.Add(clickGraphic) ' If buffer spatial reference is GCS and unit is linear, geometry service will do geodesic buffering Dim bufferParams As New ESRI.ArcGIS.Client.Tasks.BufferParameters() With { .BufferSpatialReference = New SpatialReference(4326), .OutSpatialReference = MyMap.SpatialReference, .Unit = LinearUnit.Meter } bufferParams.Distances.Add(4000) bufferParams.Features.Add(clickGraphic) _geometryService.BufferAsync(bufferParams) Next feature End If End Sub
Dim queryTask As New QueryTask("http://gis.logis.org/arcgis/rest/services/MG_Test_WGS84/MapServer/8") AddHandler queryTask.ExecuteCompleted, AddressOf QueryTaskFindPID_ExecuteCompletedSearch AddHandler queryTask.ExecuteCompleted, AddressOf QueryTask_ExecuteCompletedSpatialQuery AddHandler queryTask.ExecuteCompleted, AddressOf QueryTask_ExecuteCompletedBuffer2 AddHandler queryTask.Failed, AddressOf QueryTaskFindPID_FailedSearch
Private Sub QueryTask_ExecuteCompletedBuffer2(ByVal sender As Object, ByVal args As ESRI.ArcGIS.Client.Tasks.QueryEventArgs) ' BUFFER _geometryService = New GeometryService("http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer") AddHandler _geometryService.BufferCompleted, AddressOf GeometryService_BufferCompleted AddHandler _geometryService.Failed, AddressOf GeometryService_Failed _queryTask = New QueryTask("http://gis.logis.org/arcgis/rest/services/MG_Test_WGS84/MapServer/1") AddHandler _queryTask.ExecuteCompleted, AddressOf QueryTask_ExecuteCompletedBuffer AddHandler _queryTask.Failed, AddressOf QueryTask_Failed _pointAndBufferGraphicsLayer = TryCast(MyMap.Layers("MyGraphicsLayerBuffer"), GraphicsLayer) _resultsGraphicsLayer = TryCast(MyMap.Layers("MyGraphicsLayerBufferResults"), GraphicsLayer) Dim clickGraphic As New Graphic() clickGraphic.Symbol = TryCast(LayoutRoot.Resources("DefaultMarkerSymbol2"), ESRI.ArcGIS.Client.Symbols.Symbol) clickGraphic.Geometry = e.MapPoint ' Input spatial reference for buffer operation defined by first feature of input geometry array clickGraphic.Geometry.SpatialReference = MyMap.SpatialReference _pointAndBufferGraphicsLayer.ClearGraphics() _resultsGraphicsLayer.ClearGraphics() clickGraphic.SetZIndex(2) _pointAndBufferGraphicsLayer.Graphics.Add(clickGraphic) ' If buffer spatial reference is GCS and unit is linear, geometry service will do geodesic buffering Dim bufferParams As New ESRI.ArcGIS.Client.Tasks.BufferParameters() With { .BufferSpatialReference = New SpatialReference(4326), .OutSpatialReference = MyMap.SpatialReference, .Unit = LinearUnit.Meter } bufferParams.Distances.Add(4000) bufferParams.Features.Add(clickGraphic) _geometryService.BufferAsync(bufferParams) End Sub
For Each graphic As Graphic In args.FeatureSet.Features Dim querySpatial As New ESRI.ArcGIS.Client.Tasks.Query() querySpatial.OutFields.Add("*") querySpatial.ReturnGeometry = True querySpatial.Geometry = graphic.Geometry querySpatial.OutSpatialReference = MyMap.SpatialReference queryTaskSpatial.ExecuteAsync(querySpatial) Exit For Next
Private Sub ExecutePIDButton_Click(ByVal sender As Object, ByVal e As RoutedEventArgs) ' QUERY NUMBER 1 'Dim queryTask As New QueryTask("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/" & "Demographics/ESRI_Census_USA/MapServer/5") Dim queryTask As New QueryTask("http://gis.logis.org/arcgis/rest/services/MG_Test_WGS84/MapServer/8") AddHandler queryTask.ExecuteCompleted, AddressOf QueryTaskFindPID_ExecuteCompletedSearch AddHandler queryTask.Failed, AddressOf QueryTaskFindPID_FailedSearch '' QUERY NUMBER 2 Dim queryTask2 As New QueryTask("http://gis.logis.org/arcgis/rest/services/MG_Test_WGS84/MapServer/2") AddHandler queryTask2.ExecuteCompleted, AddressOf QueryTask_ExecuteCompletedSearch AddHandler queryTask2.Failed, AddressOf QueryTaskFindPID_FailedSearch '' PUSH TO OTEHR METHOD TO DO SPATIAL QUERY Dim queryTaskSpatialQuery As New QueryTask("http://gis.logis.org/arcgis/rest/services/MG_Test_WGS84/MapServer/2") AddHandler queryTaskSpatialQuery.ExecuteCompleted, AddressOf QueryTask_ExecuteCompletedSpatialQuery AddHandler queryTaskSpatialQuery.Failed, AddressOf QueryTaskFindPID_FailedSpatialQuery Dim query As New ESRI.ArcGIS.Client.Tasks.Query() query.OutFields.Add("*") query.Text = FindPID.Text query.ReturnGeometry = True query.OutSpatialReference = MyMap.SpatialReference queryTask.ExecuteAsync(query) End Sub
Private Sub QueryTask_ExecuteCompletedSpatialQuery(ByVal sender As Object, ByVal args As ESRI.ArcGIS.Client.Tasks.QueryEventArgs) '' SPATIAL QUERY Dim queryTaskSpatial As New QueryTask("http://gis.logis.org/arcgis/rest/services/MG_Test_WGS84/MapServer/5") AddHandler queryTaskSpatial.ExecuteCompleted, AddressOf QueryTask_ExecuteCompletedFINALBUFFER AddHandler queryTaskSpatial.Failed, AddressOf QueryTask_FailedSearch ' Bind data grid to query results Dim resultFeaturesBinding As New Binding("LastResult.Features") resultFeaturesBinding.Source = queryTaskSpatial QueryDetailsDataGrid.SetBinding(DataGrid.ItemsSourceProperty, resultFeaturesBinding) Dim querySpatial As New ESRI.ArcGIS.Client.Tasks.Query() querySpatial.OutFields.Add("*") querySpatial.ReturnGeometry = True querySpatial.Geometry = args.Geometry querySpatial.OutSpatialReference = MyMap.SpatialReference queryTaskSpatial.ExecuteAsync(querySpatial) End Sub Private Sub QueryTaskFindPID_FailedSpatialQuery(ByVal sender As Object, ByVal args As TaskFailedEventArgs) MessageBox.Show("Query failed: " & args.Error.Message) End Sub
Private Sub QueryTask_ExecuteCompletedFINALBUFFER(ByVal sender As Object, ByVal args As ESRI.ArcGIS.Client.Tasks.QueryEventArgs) Dim featureSet As FeatureSet = args.FeatureSet If featureSet Is Nothing OrElse featureSet.Features.Count < 1 Then MessageBox.Show("No features retured from query") Return End If Dim graphicsLayer As GraphicsLayer = TryCast(MyMap.Layers("MySelectionGraphicsLayer"), GraphicsLayer) If featureSet IsNot Nothing AndAlso featureSet.Features.Count > 0 Then For Each feature As Graphic In featureSet.Features feature.Symbol = TryCast(LayoutRoot.Resources("ResultsFillSymbol"), FillSymbol) graphicsLayer.Graphics.Insert(0, feature) Next feature ResultsDisplay.Visibility = Visibility.Visible End If End Sub Private Sub QueryTask_Failed(ByVal sender As Object, ByVal args As TaskFailedEventArgs) MessageBox.Show("Query failed: " & args.Error.ToString()) End Sub
Private Sub ExecutePIDButton_Click(ByVal sender As Object, ByVal e As RoutedEventArgs) ' QUERY NUMBER 1 'Dim queryTask As New QueryTask("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/" & "Demographics/ESRI_Census_USA/MapServer/5") Dim queryTask As New QueryTask("http://gis.org/arcgis/rest/services/MG_Test_WGS84/MapServer/8") AddHandler queryTask.ExecuteCompleted, AddressOf QueryTaskFindPID_ExecuteCompletedSearch AddHandler queryTask.Failed, AddressOf QueryTaskFindPID_FailedSearch Dim query As New ESRI.ArcGIS.Client.Tasks.Query() query.OutFields.Add("*") query.Text = FindPID.Text query.ReturnGeometry = True query.OutSpatialReference = MyMap.SpatialReference queryTask.ExecuteAsync(query) '' SPATIAL QUERY Dim queryTaskSpatial As New QueryTask("http://gis.org/arcgis/rest/services/MG_Test_WGS84/MapServer/5") AddHandler queryTaskSpatial.ExecuteCompleted, AddressOf QueryTask_ExecuteCompletedSearch AddHandler queryTaskSpatial.Failed, AddressOf QueryTask_FailedSearch ' Bind data grid to query results Dim resultFeaturesBinding As New Binding("LastResult.Features") resultFeaturesBinding.Source = queryTaskSpatial QueryDetailsDataGrid.SetBinding(DataGrid.ItemsSourceProperty, resultFeaturesBinding) Dim querySpatial As New ESRI.ArcGIS.Client.Tasks.Query() querySpatial.OutFields.Add("*") querySpatial.Text = QueryComboBox.SelectedItem.ToString() querySpatial.ReturnGeometry = True querySpatial.Geometry = args.Geometry querySpatial.OutSpatialReference = MyMap.SpatialReference queryTaskSpatial.ExecuteAsync(querySpatial) End Sub
If you will be using FeatureLayer or GraphicsLayer, you can use Editor.Select http://help.arcgis.com/en/webapi/silverlight/samples/start.htm#EditToolsAutoSave or EditorWidget http://help.arcgis.com/en/webapi/silverlight/samples/start.htm#ToolkitEditorWidget. Either solutions will make a selection across different layers of same or different geometries and you can access them through SelectedGraphics property http://help.arcgis.com/en/webapi/silverlight/apiref/ESRI.ArcGIS.Client~ESRI.ArcGIS.Client.GraphicsLayer~SelectedGraphics.html(available in either FeatureLayer or GraphicsLayer).
Private Sub ExecutePIDButton_Click(ByVal sender As Object, ByVal e As RoutedEventArgs) ' QUERY NUMBER 1 'Dim queryTask As New QueryTask("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/" & "Demographics/ESRI_Census_USA/MapServer/5") Dim queryTask As New QueryTask("http://gis.org/arcgis/rest/services/MG_Test_WGS84/MapServer/8") AddHandler queryTask.ExecuteCompleted, AddressOf QueryTaskFindPID_ExecuteCompletedSearch AddHandler queryTask.Failed, AddressOf QueryTaskFindPID_FailedSearch '' QUERY NUMBER 2 Dim queryTask2 As New QueryTask("http://gis.org/arcgis/rest/services/MG_Test_WGS84/MapServer/2") AddHandler queryTask2.ExecuteCompleted, AddressOf QueryTask_ExecuteCompletedSearch AddHandler queryTask2.Failed, AddressOf QueryTaskFindPID_FailedSearch Dim query As New ESRI.ArcGIS.Client.Tasks.Query() query.OutFields.Add("*") query.Text = FindPID.Text query.ReturnGeometry = True query.OutSpatialReference = MyMap.SpatialReference queryTask.ExecuteAsync(query) End Sub Private Sub QueryTaskFindPID_ExecuteCompletedSearch(ByVal sender As Object, ByVal args As ESRI.ArcGIS.Client.Tasks.QueryEventArgs) Dim featureSet As FeatureSet = args.FeatureSet ' If an item has been selected Dim graphicsLayer As GraphicsLayer = TryCast(MyMap.Layers("MyGraphicsLayerSearch"), GraphicsLayer) graphicsLayer.ClearGraphics() ''=============================================================================== '' QUERY AND UPDATE THE FIRST RESULT LOCATION ''=============================================================================== If featureSet IsNot Nothing AndAlso featureSet.Features.Count > 0 Then ' Show selected feature attributes in DataGrid Dim selectedFeature As Graphic = featureSet.Features(0) IdentifyDetailsDataGrid5.DataContext = selectedFeature.Attributes ' Hightlight selected feature selectedFeature.Symbol = TryCast(LayoutRoot.Resources("ResultsFillSymbol"), ESRI.ArcGIS.Client.Symbols.Symbol) graphicsLayer.Graphics.Add(selectedFeature) ' Zoom to selected feature (define expand percentage) Dim selectedFeatureExtent As ESRI.ArcGIS.Client.Geometry.Envelope = selectedFeature.Geometry.Extent Dim expandPercentage As Double = 230 Dim widthExpand As Double = selectedFeatureExtent.Width * (expandPercentage / 15) Dim heightExpand As Double = selectedFeatureExtent.Height * (expandPercentage / 15) Dim displayExtent As New ESRI.ArcGIS.Client.Geometry.Envelope(selectedFeatureExtent.XMin - (widthExpand / 2), selectedFeatureExtent.YMin - (heightExpand / 2), selectedFeatureExtent.XMax + (widthExpand / 2), selectedFeatureExtent.YMax + (heightExpand / 2)) MyMap.ZoomTo(displayExtent) ' Update the Parcels results panel pane If IdentifyResultsPanel5.Visibility = Visibility.Collapsed Then IdentifyResultsPanel5.Visibility = Visibility.Visible IdentifyGrid5.Height = Double.NaN IdentifyGrid5.UpdateLayout() End If Else IdentifyResultsPanel5.DataContext = Nothing IdentifyResultsPanel5.Visibility = Visibility.Collapsed IdentifyGrid5.Height = Double.NaN IdentifyGrid5.UpdateLayout() End If End Sub
サインインしたメンバーは投稿、更新のフォローなどができます。初めてですか?無料アカウントを登録してください。
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.