关闭

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

标签: SilverlightC#地图API
1438人阅读 评论(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 },
                });
            }
        }


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Openlayers之测量距离与面积

1、地图测量功能 一般的地图的测量功能主要表现在两个方面,一是测量距离,一是测量面积;面积的测量是根据鼠标绘制的范围,通过地理坐标系的转换而计算出实际面积大小,距离的测量是根据鼠标在地图上绘制的点,...
  • SmileCoffin
  • SmileCoffin
  • 2017-03-20 10:39
  • 2062

Arcgis for Android在地图上画多边形并进行边长、周长和面积的测量

Arcgis for Android的地图操作里,放大缩小地图、图层切换、定位、测距测面等都是它的一些基本操作,封装后一般调用就是了,很简单。不过最近有了个需求,在地图上画一个多边形时候同时进行多边形...
  • bit_kaki
  • bit_kaki
  • 2016-11-07 16:42
  • 6064

AE学习笔记之距离量测和面积量测

距离量测和面积量测         距离量测即根据鼠标点击的位置得到地图上的距离。首先建立一个量测结果显示对话框,如下图: 对话框中的函数如下: public delegate void F...
  • my_lord_
  • my_lord_
  • 2016-10-14 16:14
  • 1239

【开源】电子围栏-测距离-测面积-拉框放大-实时路况-逆地理编码的实现

最近项目上涉及到地图,考虑到精度等问题,最终选择了51ditu。要实现电子围栏等等功能,经过几天努力,大致有了个雏形,由于是第一次接触HTML和JavaScript编程,三天下来脑袋大了不少,碰到了一...
  • zhangyuehua123
  • zhangyuehua123
  • 2011-10-21 22:10
  • 4868

谷歌地图操作封装类(包含测距,计算面积、弹框以及google地图的一些常用操作)

  • 2017-08-28 11:29
  • 38KB
  • 下载

GIS 经纬坐标下 测距 测面积

  • 2012-04-19 17:06
  • 2KB
  • 下载

利用百度API(JavaScript 版)实现在地图上绘制任一多边形,并判断给定经纬度是否在多边形范围内。以及两点间的测距功能

权声明:本文为博主原创文章,未经博主允许不得转载。   利用百度API(JavaScript 版)实现在地图上绘制任一多边形,并判断给定经纬度是否在多边形范围内。以及两点间的测距功能。 [ja...
  • yzyssg1
  • yzyssg1
  • 2017-06-12 17:53
  • 724

双目测距原理与基于opencv的简单实现

双目测距基本原理: 如图,P是待测物体上的某一点,OR与OT分别是两个相机的光心,点P在两个相机感光器上的成像点分别为P和P’(相机的成像平面经过旋转后放在了镜头前方), f为相机焦距,B为两相机中...
  • bit_cs2010
  • bit_cs2010
  • 2016-10-16 10:21
  • 3160

opencv双目测距的简单代码实现

今年五月份开始研究双目,从刚开始的无从下手到渐渐熟悉,再到中途的想放弃,也算是历经波折,在此我把我自己东拼西凑的东西分享一下,算是我在CSDN成长的一个见证。首先说下遇到的问题: 两个摄像头之间必须固...
  • qq_37322469
  • qq_37322469
  • 2017-12-06 16:13
  • 72

百度地图API画多边型,测面积

效果:   脚本: 耕地分布图 html,body { height:100%; margin:0; } ...
  • tiz198183
  • tiz198183
  • 2013-08-08 14:59
  • 3003
    个人资料
    • 访问:25723次
    • 积分:596
    • 等级:
    • 排名:千里之外
    • 原创:34篇
    • 转载:5篇
    • 译文:0篇
    • 评论:7条
    最新评论