bu不多说,上代码

using System.Windows;
using ESRI.ArcGIS.Client;
using ESRI.ArcGIS.Client.Tasks;
using ESRI.ArcGIS.Client.Local;
using System;
using System.Windows.Input;
using ESRI.ArcGIS.Client.Geometry;
using ESRI.ArcGIS.Client.Symbols;
using System.Collections.Generic; namespace ArcGISWpfApplication2
{ public partial class MainWindow : Window
{
GeometryService gMeasureLength,gMeasureArea;
Draw drawMeasure;
public MainWindow()
{
// License setting and ArcGIS Runtime initialization is done in Application.xaml.cs. InitializeComponent();
GraphicsLayer gLayer = new GraphicsLayer();
gLayer.ID = "MyGraphicsLayerMeasure";
Map.Layers.Add(gLayer);
//Map.Layers.Insert(0, gLayer);//这样不行,arcgis runtime加载图层与arcgis mapinfo方式相反,索引大的在上面
LocalGeometryServiceInit();
} void LocalGeometryServiceInit()
{
LocalGeometryService.GetServiceAsync(localGeometryService =>
{
gMeasureLength = new GeometryService();
gMeasureLength.Url = localGeometryService.UrlGeometryService;
gMeasureLength.LengthsCompleted += gMeasureLength_LengthsCompleted;
gMeasureLength.Failed += gMeasureLength_Failed;
}); LocalGeometryService.GetServiceAsync(localGeometryService =>
{
gMeasureArea = new GeometryService();
gMeasureArea.Url = localGeometryService.UrlGeometryService;
gMeasureArea.AreasAndLengthsCompleted += gMeasureArea_AreasAndLengthsCompleted;
gMeasureArea.Failed += gMeasureLength_Failed;
});
} void gMeasureArea_AreasAndLengthsCompleted(object sender, AreasAndLengthsEventArgs e)
{
double _Lengths = e.Results.Lengths[];
double _Area = e.Results.Areas[];
MessageBox.Show(String.Format("多边形周长为{0},面积为{1}",Math.Round(_Lengths,),Math.Round(_Area,)));
} void gMeasureLength_Failed(object sender, TaskFailedEventArgs e)
{
MessageBox.Show("测量失败");
} void gMeasureLength_LengthsCompleted(object sender, LengthsEventArgs e)
{
MessageBox.Show(String.Format("折线的长度:{0} 公里", Math.Round(e.Results[], )));
Map.Cursor = Cursors.Hand;
} private void MeasureLine(object sender, RoutedEventArgs e)
{
GraphicsLayer _GraphicsLayer = Map.Layers["MyGraphicsLayerMeasure"] as GraphicsLayer;
_GraphicsLayer.ClearGraphics();
drawMeasure = new Draw(Map)
{
DrawMode = DrawMode.Polyline,
IsEnabled = true,
//LineSymbol = Root.Resources["SelectLineSymbol"] as LineSymbol
}; drawMeasure.DrawBegin +=drawMeasure_DrawBegin;
drawMeasure.DrawComplete +=drawMeasure_DrawDistanceComplete;
} void drawMeasure_DrawDistanceComplete(object sender, DrawEventArgs e)
{
Polyline _Polyline = e.Geometry as Polyline;
_Polyline.SpatialReference = Map.SpatialReference;
Graphic _Graphic = new Graphic()
{
Symbol = Resources["CompleteLineSymbol"] as Symbol,//不自定义的话默认的是透明的,不然测量完看不到线
Geometry = _Polyline
}; GraphicsLayer _GraphicsLayer = Map.Layers["MyGraphicsLayerMeasure"] as GraphicsLayer;
_GraphicsLayer.Graphics.Add(_Graphic); //开始计算长度
gMeasureLength.LengthsAsync(_GraphicsLayer.Graphics, LinearUnit.Kilometer, CalculationType.Geodesic, null);
drawMeasure.DrawMode = DrawMode.None; } void drawMeasure_DrawBegin(object sender, EventArgs e)
{
Map.Cursor=Cursors.Arrow;
}
//MeasureAreaLength
private void MeasureAreaLength(object sender, RoutedEventArgs e)
{
GraphicsLayer _GraphicsLayer = Map.Layers["MyGraphicsLayerMeasure"] as GraphicsLayer;
_GraphicsLayer.ClearGraphics();
drawMeasure = new Draw(Map)
{
DrawMode = DrawMode.Polygon,
IsEnabled = true,
//LineSymbol = Root.Resources["SelectLineSymbol"] as LineSymbol
}; drawMeasure.DrawBegin += drawMeasure_DrawBegin;
drawMeasure.DrawComplete += drawMeasure_DrawAreaLengthComplete;
} private void drawMeasure_DrawAreaLengthComplete(object sender, DrawEventArgs e)
{
Polygon _Polygon = e.Geometry as Polygon;
_Polygon.SpatialReference = Map.SpatialReference;
Graphic _Graphic = new Graphic() {
Symbol = Resources["CompletePolygonSymbol"] as Symbol,
Geometry = _Polygon
};
GraphicsLayer _GraphicsLayer = Map.Layers["MyGraphicsLayerMeasure"] as GraphicsLayer;
_GraphicsLayer.Graphics.Add(_Graphic);
List<Graphic> _GraphicList = new List<Graphic>();
_GraphicList.Add(_Graphic);
gMeasureArea.AreasAndLengthsAsync(_GraphicList,AreaUnit.SquareKilometers);
} }
}
<Window x:Class="ArcGISWpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:esri="http://schemas.esri.com/arcgis/client/2009"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<esri:SimpleLineSymbol x:Key="CompleteLineSymbol" Color="Green" Width="4" />
<esri:SimpleFillSymbol x:Key="CompletePolygonSymbol" Fill="Green" BorderBrush="LightBlue" BorderThickness="1" />
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Border Background="#ccc">
<StackPanel Orientation="Horizontal">
<Button Height="30" Width="100" Click="MeasureLine">测距</Button>
<Button Height="30" Width="100" Click="MeasureAreaLength">测面积</Button>
</StackPanel>
</Border>
<esri:Map x:Name="Map" Grid.Row="1" Background="White" Cursor="Hand" Extent="-20014711, 15, 1656956, 12175318">
<esri:ArcGISTiledMapServiceLayer ID="BaseLayer" Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer" />
<!--<esri:GpsLayer x:Name="MyGpsLayer" />-->
</esri:Map>
</Grid>
</Window>

ArcGIS Runtime SDK for WPF之测量距离和面积的更多相关文章

  1. ArcGIS Runtime SDK for WPF已不更新,后续将被ArcGIS Runtime SDK for .NET取代

    ArcGIS Runtime SDK 10.2.5 for WPF is now available! by mbranscomb and Rex Hansen on January 27, 2015 ...

  2. ArcGIS runtime sdk for wpf 授权

    这两天由于runtime sdk for wpf的授权和runtime sdk 其他产品的授权的不一样导致自己混乱不堪. 总结下吧. sdk 简介 当前ArcGIS runtime sdk 包括一系列 ...

  3. ArcGIS Runtime SDK for WPF之SimpleRenderer无法添加、报错“图形符号无法序列化为 JSON”

    ArcGIS Runtime SDK for WPF之SimpleRenderer无法添加.报错“图形符号无法序列化为 JSON” 在上一篇博文中如果在 esri:Map 里面是否设置了的UseAcc ...

  4. ArcGIS Runtime SDK for WPF 初始化

    安装包 管理nuget包 Esri.ArcGISRuntime.WPF 也许还需要 Esri.ArcGISRuntime.Hydrography Esri.ArcGISRuntime.LocalSer ...

  5. ArcGIS Runtime SDK for WPF学习笔记(一)

    本节主要讲解如何安装ArcGIS Runtime SDK,以及移除注释与水印. 附上ArcGIS Runtime SDK for .NET的官方操作手册网址:https://developers.ar ...

  6. Arcgis for Js之GeometryService实现测量距离和面积

    距离和面积的测量时GIS常见的功能,在本节,讲述的是通过GeometryService实现测量面积和距离.先看看实现后的效果:                                  距离 ...

  7. (转)Arcgis for Js之GeometryService实现测量距离和面积

    http://blog.csdn.net/gisshixisheng/article/details/40540601 距离和面积的测量时GIS常见的功能,在本节,讲述的是通过GeometryServ ...

  8. 《ArcGIS Runtime SDK for Android开发笔记》——(3)、ArcGIS Runtime SDK概述

    1.前言 ArcGIS Runtime SDK是一整套用于构建原生及跨平台的地图应用程序的开发包,包括移动设备的Android.iOS.Windows Phone,针对桌面的.Net.Java.OSX ...

  9. Arcgis runtime sdk .net 二次开发

    前段时间研究了下 arcgis runtime sdk .net 二次开发··这里做个笔记 runtime版本为100.6 基于WPF 开发 命名空间引入 xmlns:esri="http: ...

随机推荐

  1. po dto vo bo

    DozerBeanMapper是JavaBean的映射工具,可以进行对象之间相同属性名赋值     关于PO.DTO.VO在分层模型之间的关系:首先在持久层由DAO访问数据库将数据对象封装成PO,然后 ...

  2. Python3:input()输入函数的用法

    Python3:input()输入函数的用法 一.简介 input这个函数,第一个参数是提示语,它默认是空的.在我们使用input的时候,会从标准输入中读取一个string,即字符串(请注意,这里很重 ...

  3. jQuery上下切换带缩略图的焦点图

    在线演示 本地下载

  4. awk分割列-【AWK学习之旅】

    ---===AWK学习之旅===--- awk 内置分割函数:split,将列按照指定分割符,分割成数组 用法:split(str1,array,"分隔符") 文件内容: [roo ...

  5. Centos 6\7 防火墙入门配置

    Centos 6 -- iptables iptables 用法: iptables (选项) (参数) 选项: -t<表>:指定要操纵的表: -A:向规则链中添加条目: -D:从规则链中 ...

  6. TeamViewer---Linux远程控制利器

    TeamViewer中国官网 TeamViewer用户手册 参考链接一 参考链接二 参考链接三:每天一个linux命令(41):ps命令 简介 TeamViewer是一个远程控制软件,兼容于Micro ...

  7. 关于C/C++中main函数参数的学习

    因为面对对象作业(2018.5.21)的要求,去学习了C/C++中main函数参数的意义,以及一些简单的使用(从命令行指令的接受),不给予赘述.(仅为个人拙见,还望看官指正) 首先,带有参数的main ...

  8. 正则表达式【TLCL】

    grep[global regular expression print] print lines matching a pattern grep [options] regex [file...] ...

  9. Apache HTTP Server——官网下载

    Windows版 Apache 2.4.x OpenSSL 1.0.2 VC14  ——Apache 2.4.34 x64(注:x64就是64位,x86就是32位) https://www.apach ...

  10. hbase learning

    万万没想到,促使我填坑的居然是学习HBase,之前听分享的时候知道它是一个kv型的数据库就没有多了解,现在才开始学习. hbase和bigtable很像,入门看起来也不太难#flag #下面是对于我看 ...