微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

silverlight调用Geometry服务实现缓冲区

Geometry服务发布:

前端代码

<UserControl x:Class="SilverlightApplication5.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
                 xmlns:esri="http://schemas.esri.com/arcgis/client/2009"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

    <Grid x:Name="LayoutRoot" Background="White">

        <Grid.Resources>
            <esri:PictureMarkerSymbol x:Key="DefaultClickSymbol" OffsetX="11" OffsetY="39" Source="/car-red-16x16.png" />
            <esri:SimpleFillSymbol x:Key="DefaultBufferSymbol" Fill="#660000FF" BorderBrush="Blue" BorderThickness="2"  />
        </Grid.Resources>

        <esri:Map Name="MyMap" MouseClick="Buffer_MouseClick"  Extent="-122.5009,37.741,-122.3721,37.8089">
            <esri:ArcGISTiledMapServiceLayer ID="ESRIMap" Url="http://services.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer"/>
            <esri:Graphicslayer ID="MyGraphicslayer">
                
            </esri:Graphicslayer>
        </esri:Map>

        <Grid HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,10,0" >
            <Rectangle Fill="#77919191" stroke="Gray"  RadiusX="10" RadiusY="10" Margin="0,5" >
                <Rectangle.Effect>
                    <DropShadowEffect/>
                </Rectangle.Effect>
            </Rectangle>
            <Rectangle Fill="#FFFFFFFF" stroke="DarkGray" RadiusX="5" RadiusY="5" Margin="10,15" />
            <TextBlock x:Name="@R_299_4045@ionTextBlock" Text="Click on map to set a location. A buffer of 5 miles will be displayed."
                        Width="200" TextAlignment="Left" Margin="30,20,25,30" textwrapping="Wrap" />
        </Grid>
    </Grid>
</UserControl>


 

后台代码

private void ArcGISDynamicMapServiceLayer_InitializationFailed(object sender,EventArgs e)
        {
            Layer layer = sender as Layer;
            MessageBox.Show(layer.InitializationFailure.Message);
        }

        private void Buffer_MouseClick(object sender,Map.MouseEventArgs e)
        {
            Graphicslayer graphicslayer = MyMap.Layers["MyGraphicslayer"] as Graphicslayer;
            graphicslayer.Cleargraphics();

            e.MapPoint.SpatialReference = MyMap.SpatialReference;
            Graphic graphic = new Graphic()
            {
                Geometry = e.MapPoint,Symbol = LayoutRoot.Resources["DefaultClickSymbol"] as Symbol
            };
            graphic.SetZIndex(1);
            graphicslayer.Graphics.Add(graphic);

            GeometryService geometryService = new GeometryService("http://localhost/arcgis/rest/services/Geometry/GeometryServer");
            geometryService.BufferCompleted += new EventHandler<GraphicsEventArgs>(geometryService_BufferCompleted);
            geometryService.Failed += new EventHandler<TaskFailedEventArgs>(geometryService_Failed);

            BufferParameters bufferParams = new BufferParameters() { 
                Unit=LinearUnit.StatuteMile,BufferSpatialReference=new ESRI.ArcGIS.Client.Geometry.SpatialReference(4326),OutSpatialReference=MyMap.SpatialReference
            };
            bufferParams.Features.Add(graphic);
            bufferParams.distances.Add(1);

            geometryService.BufferAsync(bufferParams);
        }

        void geometryService_Failed(object sender,TaskFailedEventArgs e)
        {
            MessageBox.Show("Geometry ServiceException error:"+e.Error);
        }

        void geometryService_BufferCompleted(object sender,GraphicsEventArgs e)
        {
            IList<Graphic> result = e.Results;
            Graphicslayer graphicslayer = MyMap.Layers["MyGraphicslayer"] as Graphicslayer;
            foreach (Graphic graphic in result)
            {
                graphic.Symbol = LayoutRoot.Resources["DefaultBufferSymbol"] as Symbol;
                graphicslayer.Graphics.Add(graphic);
            }
        }


 

结果:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐