ArcGIS API for Silverlight实现地图测距功能

ArcGIS API for Silverlight实现地图测距功能,第1张

概述问题:如何实现地图测距功能? 地图工具栏 <Grid x:Name="gToolMenu" Height="100" VerticalAlignment="Top" Opacity="0.8" HorizontalAlignment="Right" Width="467"> <Rectangle Fill="#22919191" RadiusX="10" RadiusY

问题:如何实现地图测距功能


地图工具栏


 <GrID x:name="gToolMenu"  Height="100" VerticalAlignment="top" Opacity="0.8" HorizontalAlignment="Right" WIDth="467">            <Rectangle Fill="#22919191" RadiusX="10" RadiusY="10" margin="0,6" >                <Rectangle.Effect>                    <DropShadowEffect/>                </Rectangle.Effect>            </Rectangle>            <Rectangle Fill="#CCFFFFFF" stroke="DarkGray" RadiusX="5" RadiusY="5" margin="5,10,5,10" />            <StackPanel OrIEntation="Vertical">                <esri:Toolbar x:name="MyToolbar" MaxItemHeight="80" MaxItemWIDth="80"                    VerticalAlignment="top" HorizontalAlignment="Center"                    Loaded="MyToolbar_Loaded"                    ToolbarItemClicked="MyToolbar_ToolbarItemClicked"                     WIDth="458" Height="80">                    <esri:Toolbar.Items>                        <esri:ToolbarItemCollection>                            <esri:ToolbarItem Text="Zoom In">                                <esri:ToolbarItem.Content>                                    <Image Source="Images/i_zoomin.png" Stretch="Uniform" margin="5" />                                </esri:ToolbarItem.Content>                            </esri:ToolbarItem>                            <esri:ToolbarItem Text="Zoom Out">                                <esri:ToolbarItem.Content>                                    <Image Source="Images/i_zoomout.png" Stretch="Uniform" margin="5" />                                </esri:ToolbarItem.Content>                            </esri:ToolbarItem>                            <esri:ToolbarItem Text="Pan">                                <esri:ToolbarItem.Content>                                    <Image Source="Images/i_pan.png" Stretch="Uniform" margin="5" />                                </esri:ToolbarItem.Content>                            </esri:ToolbarItem>                            <esri:ToolbarItem Text="Measure Length">                                <esri:ToolbarItem.Content>                                    <Image Source="Images/i_measure.png" margin="5">                                        <i:Interaction.Triggers>                                            <i:EventTrigger Eventname="MouseleftbuttonDown">                                                <esri:MeasureAction Targetname="myMap" AreaUnit="SquareMeters"  MeasureMode="polyline" distanceUnit="Kilometers"   FillSymbol="{StaticResource DefaultFillSymbol}"  displayTotals="True" MapUnits="Kilometers"/>                                            </i:EventTrigger>                                        </i:Interaction.Triggers>                                    </Image>                                </esri:ToolbarItem.Content>                            </esri:ToolbarItem>                            <esri:ToolbarItem Text="PrevIoUs Extent" >                                <esri:ToolbarItem.Content>                                    <Image Source="Images/i_prevIoUs.png" IsHitTestVisible="False" Opacity="0.3" Stretch="Uniform" margin="5"/>                                </esri:ToolbarItem.Content>                            </esri:ToolbarItem>                            <esri:ToolbarItem Text="Next Extent">                                <esri:ToolbarItem.Content>                                    <Image Source="Images/i_next.png" IsHitTestVisible="False" Opacity="0.3" Stretch="Uniform" margin="5"/>                                </esri:ToolbarItem.Content>                            </esri:ToolbarItem>                            <esri:ToolbarItem Text="Full Extent">                                <esri:ToolbarItem.Content>                                    <Image Source="Images/i_globe.png" Stretch="Uniform" margin="5" />                                </esri:ToolbarItem.Content>                            </esri:ToolbarItem>                            <esri:ToolbarItem Text="Full Screen">                                <esri:ToolbarItem.Content>                                    <Image Source="Images/i_Widget.png" Stretch="Uniform" margin="5" />                                </esri:ToolbarItem.Content>                            </esri:ToolbarItem>                        </esri:ToolbarItemCollection>                    </esri:Toolbar.Items>                </esri:Toolbar>            </StackPanel>        </GrID>

上面是工具栏代码,测距的xaml代码从中抽取如下:

 <esri:ToolbarItem Text="Measure Length">     <esri:ToolbarItem.Content>               <Image Source="Images/i_measure.png" margin="5">                       <i:Interaction.Triggers>                               <i:EventTrigger Eventname="MouseleftbuttonDown">                                      <esri:MeasureAction Targetname="myMap" AreaUnit="SquareMeters"  MeasureMode="polyline" distanceUnit="Kilometers"   FillSymbol="{StaticResource DefaultFillSymbol}"  displayTotals="True" MapUnits="Kilometers"/>                              </i:EventTrigger>                        </i:Interaction.Triggers>               </Image>     </esri:ToolbarItem.Content> </esri:ToolbarItem>


代码分析:

为图片Image添加Triggers,监听Image的鼠标左键按下事件,然后执行MeasureAction,目标是myMap地图,测量方式是polyline,单位是千米(Kilometers),符号使用的是一个静态资源。


 <esri:ToolbarItem Text="Measure Length">
              <esri:ToolbarItem.Content>
                             <Image Source="Images/i_measure.png" margin="5">
                                        <i:Interaction.Triggers>
                                            <i:EventTrigger Eventname="MouseleftbuttonDown">
                                                <esri:MeasureAction Targetname="myMap" AreaUnit="SquareMeters"  MeasureMode="polyline" distanceUnit="Kilometers"   FillSymbol="{StaticResource DefaultFillSymbol}"  
displayTotals="True" MapUnits="Kilometers"/>
                                            </i:EventTrigger>
                                        </i:Interaction.Triggers>
                           </Image>
        </esri:ToolbarItem.Content>
</esri:ToolbarItem>


当按下测距按钮时,可以在地图上画线测距了,效果如下图:


注:其它要注意引用的地方

 xmlns:esri="http://schemas.esri.com/arcgis/clIEnt/2009"
 xmlns:i="clr-namespace:System.windows.Interactivity;assembly=System.windows.Interactivity" 

<GrID.Resources>

        <esri:SimpleFillSymbol x:Key="DefaultFillSymbol" borderBrush="Red" borderThickness="1"/> </GrID.Resources>

总结

以上是内存溢出为你收集整理的ArcGIS API for Silverlight实现地图测距功能全部内容,希望文章能够帮你解决ArcGIS API for Silverlight实现地图测距功能所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1011658.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存