地图测距和测面积的简单实现

标签: Silverlight C# 地图 API
1498人阅读 评论(0) 收藏 举报
分类:

在silverlight api中测距和测面积有多种实现方式,

     第一种,使用GeometryServer服务;

     第二种,使用行为动作MeasureAction;

     第三种,使用ESRI.ArcGIS.Client.Geometry.Euclidian类;
我主要说说第三种实现方式,前两种网上已经有很多资料了。

代码如下:

	private Draw _DrawTool;
	private EventHandler<DrawEventArgs> _DrawComplete;

	//测距
        public void Ranging(EventHandler<DrawEventArgs> drawComplete = null)
        {
            if (drawComplete == null) drawComplete = Ranging_Complete;
            CreateFreeBursh(drawComplete);
            _DrawTool.DrawMode = DrawMode.Polyline;
            OpenFreeBursh();
        }
        private void Ranging_Complete(object sender, DrawEventArgs e)
        {
            double length = Math.Abs(ESRI.ArcGIS.Client.Geometry.Euclidian.Length(e.Geometry as Polyline));
            if (length > 0)
            {
                this.Graphics.Add(new Graphic()
                {
                    Geometry = e.Geometry,
                    Symbol = new SimpleLineSymbol() { Color = new SolidColorBrush(Colors.Red), Width = 2 },
                });
                this.Graphics.Add(new Graphic()
                {
                    Geometry = (e.Geometry as Polyline).Paths.LastOrDefault().LastOrDefault(),
                    Symbol = new TextSymbol() { Text = string.Format("{0:F} km", length / 1000), FontFamily = new FontFamily("SimSun"), FontSize = 13 },
                });
            }
        }

        //测面积
        public void Polygon(EventHandler<DrawEventArgs> drawComplete = null)
        {
            if (drawComplete == null) drawComplete = Polygon_Complete;
            CreateFreeBursh(drawComplete);
            _DrawTool.DrawMode = DrawMode.Polygon;
            OpenFreeBursh();
        }
        private void Polygon_Complete(object sender, DrawEventArgs e)
        {
            double area = Math.Abs(ESRI.ArcGIS.Client.Geometry.Euclidian.Area(e.Geometry as Polygon));
            if (area > 0)
            {
                this.Graphics.Add(new Graphic()
                {
                    Geometry = e.Geometry,
                    Symbol = new SimpleFillSymbol() { Fill = new SolidColorBrush(AppColorManager.HtmlToColor("#22FF0000")), BorderBrush = new SolidColorBrush(Colors.Red), BorderThickness = 2 }
                });
                this.Graphics.Add(new Graphic()
                {
                    Geometry = (e.Geometry as Polygon).Rings.LastOrDefault().FirstOrDefault(),
                    Symbol = new TextSymbol() { Text = string.Format("{0:F} km2", area / 1000000), FontFamily = new FontFamily("SimSun"), FontSize = 13 },
                });
            }
        }


查看评论

iOS GPS定位-地图显示、定位| 高德地图| 百度地图

-
  • 1970年01月01日 08:00

地图知识

1、什么是地图? 地图是按照一定的法则,有选择地以二维或多维形式与手段在平面或球面上表示地球(或其它星球)若干现象的图形或图像,它具有严格的数学基础、符号系统、文字注记,并能用地图概括原则,...
  • zhangjie_xiaoke
  • zhangjie_xiaoke
  • 2009-12-14 16:20:00
  • 385

测量学—数字测图原理与方法

第一章 绪论 1.1 测绘学的任务及作用 1.2 数字测图的发展概况 1.3 学习数字测图原理与方法的目的和要求 第二章 测量的基本知识 2.1 地球形状和大小 ...
  • u012176176
  • u012176176
  • 2017-08-03 14:46:42
  • 286

转载 GIS地图知识

GIS地图知识  转载自:http://blog.csdn.net/sx811125/article/details/4361203       1. 地图、地图制图学 .  2. 地图基本概...
  • wsh6759
  • wsh6759
  • 2012-04-03 23:25:22
  • 1213

基于ArcMap的地图符号制作(详细教程)

本帖来源于http://bbs.esrichina-bj.cn/ESRI/thread-40793-1-1.html1 地图符号的具体制作过程  在我们制作以上几种符号之前,首先要单独创建一个自己的样...
  • jingss_3
  • jingss_3
  • 2010-01-06 16:45:00
  • 2822

地图投影系列介绍(二)_ 地理坐标系

3、地理坐标系         地球的形状与大小确定之后,还必须确定椭球体与大地水准面的相对关系,这项工作称为椭球定位与定向。与大地水准面符合得最好的一个地球椭球体,称为参考椭球体,是地球形体三级逼...
  • arcgis_all
  • arcgis_all
  • 2013-04-22 17:49:09
  • 4036

摘一些GIS地图的基础知识(学习学习)

GIS 地 图 知 识      1. 地图、地图制图学 . 2. 地图基本概念-特性、分类、用途、工艺 (国家基本比例尺地形图)             3. 地图数学基础 (椭球、投影、高斯-克吕...
  • sx811125
  • sx811125
  • 2009-07-19 13:45:00
  • 1342

ArcGIS10.1新特性——规划、监控地图缓存

创建地图缓存,会明显提高我们浏览地图服务的速度,特别对于应用中使用的非常详细的底图数据,创建缓存以提高应用性能尤为重要。如果之前创建过缓存,你可能已经意识到,创建大数据缓存将花费大把的时间,占用大量的...
  • ArcgisServer_book
  • ArcgisServer_book
  • 2012-11-15 11:01:17
  • 2408

Android github上优秀开源项目分类汇总

第一部分 个性化控件(View)主要介绍那些不错个性化的 View,包括 ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、Pr...
  • wqbs369
  • wqbs369
  • 2018-04-08 15:43:22
  • 2020

Github上的andoird开源组件整理

第一部分 个性化控件(View) 主要介绍那些不错个性化的View,包括ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、...
  • yjijilrx
  • yjijilrx
  • 2015-07-22 11:13:06
  • 5511
    个人资料
    持之以恒
    等级:
    访问量: 2万+
    积分: 645
    排名: 7万+
    最新评论