
问题:如何实现地图测距功能?
地图工具栏
<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实现地图测距功能所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)