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. js 性能优化 篇一

    JS性能优化 摘自:http://www.china125.com/design/js/3631.htm  首先,由于JS是一种解释型语言,执行速度要比编译型语言慢得多.(注:,Chrome是第一款内 ...

  2. 字符数组(char)和字符串(string)的转换

    #include<iostream>#include<string>using namespace std;void main(){ string LyuS = "W ...

  3. Apache 日志管理

    日志参数 %% 百分号(Apache2.0.44或更高的版本) %a 远端IP地址 %A 本机IP地址 %B 除HTTP头以外传送的字节数 %b 以CLF格式显示的除HTTP头以外传送的字节数,也就是 ...

  4. (补充一)CountDownLatch

    引言:  在学习单例模式时候,用到了锁synchronized的概念,在多线程中又用到了CountDownLatch的概念 CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待, ...

  5. Record and accumulation

    最近有同学在准备校招的问题,问我几个问题,我觉得有必要把大家的问题汇总下: 1.在设计变量的while指挥时候,可以利用弹栈的特性以及Java传值 只是传递的副本  去控制 : https://www ...

  6. struts2——上传文件

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  7. Spring Boot集成Redis实现缓存机制【从零开始学Spring Boot】

    转自:https://blog.csdn.net/linxingliang/article/details/52263763 spring boot 自学笔记(三) Redis集成—RedisTemp ...

  8. Linux 实用指令之查看端口开启情况

    netstat -ntlp 查看端口使用情况! netstat -ntlp | grep 80 查看具体的端口是否使用! # netstat -ntlp Active Internet connect ...

  9. 红米手机.驱动.XP安装

    1.发现 官网上下载的 驱动在 XP下安装不上去... (Win7 记得 貌似 没有问题...) 1.1.网上搜到的 解决方案为:解决手机不能连电脑 XP系统无法安装MTP设备驱动的终极解决_小米No ...

  10. JAR_给别人使用

    1. http://zhidao.baidu.com/link?url=Ru2tGNV5iRsuRYlEdWzmKDRz88aYqHAqQBQy8sCaHWhjJpaJpbTGibEk-zyxegNJ ...