Jennifer thanks.....I am lost on this one.. this is what I have....I thank you for your patience...XAML <esri:Map x:Name="MyMap" MouseClick="MyMap_MouseClick"
<!-- SNIP -->
<!-- DOWN HERE A BUTTON -->
<Button HorizontalAlignment="Center" Click="CalculateViewshed_Click" Tag="0" Margin="5,5,0,0" VerticalAlignment="Center" Width="50" Height="20" Content="ViewShed" Foreground="#FFFFFFFF"
Style="{StaticResource GlassButton}"/>VB
Private Sub MyMap_MouseClick(ByVal sender As Object, ByVal e As ESRI.ArcGIS.Client.Map.MouseEventArgs)
If Not calculateViewshed Then
Return
End If
' 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/arcgis/rest/services/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
Private calculateViewshed As Boolean = False
Private Sub CalculateViewshed_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
calculateViewshed = Not calculateViewshed
End Sub
'========================================================================================
' CALCULATE VIEWSHED VIEWER
'========================================================================================
Private Sub GetViewShed(ByVal sender As Object, ByVal e As ESRI.ArcGIS.Client.Map.MouseEventArgs)
_geoprocessorTask.CancelAsync()
Dim graphicsLayer As GraphicsLayer = TryCast(MyMap.Layers("MyGraphicsLayerViewShed"), GraphicsLayer)
graphicsLayer.ClearGraphics()
Dim mapPoint As MapPoint = e.MapPoint
mapPoint.SpatialReference = New SpatialReference(3857)
Dim graphic As New Graphic() With {.Symbol = TryCast(LayoutRoot.Resources("StartMarkerSymbol"), Symbol), .Geometry = mapPoint}
graphicsLayer.Graphics.Add(graphic)
MyMap.Cursor = System.Windows.Input.Cursors.Wait
Dim parameters As New List(Of GPParameter)()
parameters.Add(New GPFeatureRecordSetLayer("Input_Observation_Point", mapPoint))
parameters.Add(New GPLinearUnit("Viewshed_Distance", esriUnits.esriMiles, Convert.ToDouble(MilesTextBox.Text)))
_geoprocessorTask.OutputSpatialReference = New SpatialReference(3857)
_geoprocessorTask.ExecuteAsync(parameters)
End Sub
Private Sub GeoprocessorTask_ExecuteCompletedViewShed(ByVal sender As Object, ByVal args As ESRI.ArcGIS.Client.Tasks.GPExecuteCompleteEventArgs)
MyMap.Cursor = System.Windows.Input.Cursors.Hand
Dim graphicsLayer As GraphicsLayer = TryCast(MyMap.Layers("MyGraphicsLayerViewShed"), GraphicsLayer)
For Each gpParameter As GPParameter In args.Results.OutParameters
If TypeOf gpParameter Is GPFeatureRecordSetLayer Then
Dim layer As GPFeatureRecordSetLayer = TryCast(gpParameter, GPFeatureRecordSetLayer)
For Each graphic As Graphic In layer.FeatureSet.Features
graphic.Symbol = TryCast(LayoutRoot.Resources("DefaultFillSymbol"), Symbol)
graphicsLayer.Graphics.Add(graphic)
Next graphic
End If
Next gpParameter
End Sub