在之前的实验中,距离量算跟面积量算一直出问题,费了非常长的时间,各种调式找不到原因。

如今成功完毕。与君共勉

1、距离量算中        lengthParams.polylines = [geometry];

2、面积量算中        this.outSR = new esri.SpatialReference({ wkid: 102113 });
        geometryService.project([geometry], this.outSR, function (geometry) {
            geometryService.simplify(geometry, function (simplifiedGeometries) {
                areasAndLengthParams.polygons = simplifiedGeometries;
                areasAndLengthParams.polygons[0].spatialReference = new esri.SpatialReference(102113);
                geometryService.areasAndLengths(areasAndLengthParams);
            });
        });

还有面积量算中跟距离量算有所不同,须要进行投影变换!由于一般咱们的底图坐标系为4326

//量測
function measutreLength() {toolbar.activate(esri.toolbars.Draw.POLYLINE);
}
function measutreArea() {toolbar.activate(esri.toolbars.Draw.POLYGON);
}
//量算
function doMeasure(geometry) {//更加类型设置显示样式measuregeometry = geometry; toolbar.deactivate();switch (geometry.type) {case "polyline":var symbol = new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([0, 0, 0]), 2);break;case "polygon":var symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_NONE, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_DASHDOT, new dojo.Color([255, 0, 0]), 2), new dojo.Color([255, 255, 0, 0.25]));break;}//设置样式var graphic = new esri.Graphic(geometry,symbol);//清除上一次的绘图内容myMap.graphics.clear();myMap.graphics.add(graphic);//进行投影转换,完毕后调用projectCompleteMeasureGeometry(geometry);
}//投影转换完毕后调用方法
function MeasureGeometry(geometry) {//假设为线类型就进行lengths距离測算if (geometry.type == "polyline") {var lengthParams = new esri.tasks.LengthsParameters();lengthParams.polylines = [geometry];lengthParams.lengthUnit = esri.tasks.GeometryService.UNIT_METER;lengthParams.geodesic = true;lengthParams.polylines[0].spatialReference = new esri.SpatialReference(4326);geometryService.lengths(lengthParams);dojo.connect(geometryService, "onLengthsComplete", outputDistance);}//假设为面类型须要先进行simplify操作在进行面积測算else if (geometry.type == "polygon") {var areasAndLengthParams = new esri.tasks.AreasAndLengthsParameters();areasAndLengthParams.lengthUnit = esri.tasks.GeometryService.UNIT_METER;areasAndLengthParams.areaUnit = esri.tasks.GeometryService.UNIT_SQUARE_METERS;this.outSR = new esri.SpatialReference({ wkid: 102113 });geometryService.project([geometry], this.outSR, function (geometry) {geometryService.simplify(geometry, function (simplifiedGeometries) {areasAndLengthParams.polygons = simplifiedGeometries;areasAndLengthParams.polygons[0].spatialReference = new esri.SpatialReference(102113);geometryService.areasAndLengths(areasAndLengthParams);});});dojo.connect(geometryService, "onAreasAndLengthsComplete", outputAreaAndLength);}
}//显示測量距离
function outputDistance(result) {var CurX = measuregeometry.paths[0][measuregeometry.paths[0].length - 1][0];var CurY = measuregeometry.paths[0][measuregeometry.paths[0].length - 1][1];var  CurPos  =  new  esri.geometry.Point(CurX,  CurY, myMap.spatialReference);myMap.infoWindow.setTitle("距离測量");myMap.infoWindow.setContent(" 測 量 长 度 : <strong>" + parseInt(String(result.lengths[0])) + "米</strong>");myMap.infoWindow.show(CurPos);
}//显示測量面积
function outputAreaAndLength(result) {var CurX = (measuregeometry._extent.xmax + measuregeometry._extent.xmin) / 2;var CurY = (measuregeometry._extent.ymax + measuregeometry._extent.ymin) / 2var CurPos = new esri.geometry.Point(CurX, CurY, myMap.spatialReference);myMap.infoWindow.setTitle("面积測量");myMap.infoWindow.setContent(" 面积 : <strong>" + parseInt(String(result.areas[0])) + "平方米</strong> 周长:" + parseInt(String(result.lengths[0])) + "米");myMap.infoWindow.show(CurPos);//alert("面积:" + dojo.number.format(result.areas[0]) + "平方米" + " 长度:" + dojo.number.format(result.lengths[0]) + "米");
}

转载于:https://www.cnblogs.com/ldxsuanfa/p/10775947.html

arcgis api for javascript 距离与面积量算相关推荐

  1. 缓冲区分析—ArcGIS API for JavaScript

    缓冲区分析是地理信息系统中的空间分析基本功能之一,是众多空间分析方法的基础.缓冲区分析是指为了识别某地理实体或空间物体对其周围的邻近性或影响度而在其周围建立的一定宽度的带状区. 缓冲区介绍 缓冲区分析 ...

  2. 地图小部件—ArcGIS API for JavaScript

    电子地图和传统的纸质地图最大的区别就是交互的程度不一样,而交互性很大程度上由地图的小部件所控制.传统的纸制地图主要有三个基本的部件(要素):比例尺.指北针.图例,而电子地图有更多的交互性小部件选择,在 ...

  3. 地理信息系统(GIS)系列——ArcGIS API for JavaScript 3.9(1)

    Visual Studio 智能提示配置:将以下 JavaScript 文件引入项目中 arcgis_js_v39_sdk\arcgis_js_api\sdk\jshelp\jsapi_vsdoc12 ...

  4. arcgis api for JavaScript _跨域请求

    arcgis api for JavaScript  中出现跨域请求是常见问题, 通常出现类似如下错误消息类似: XMLHttpRequest cannot load http://10.32.2.7 ...

  5. 基于ArcGIS API for JavaScript加载天地图

    文章目录 前言 效果图 详细代码 总结 参考链接 前言 该篇主要介绍如何用ArcGIS JS API加载天地图,具体应用场景以及需求分析等,在上篇基于ArcGIS API for JavaScript ...

  6. 基于ArcGIS API for JavaScript加载百度各种类型切片地图

    文章目录 应用场景 需求分析 效果图 实现代码 原理解读 应用场景 部分项目基于ArcGIS平台,但是甲方只提供部分矢量数据,用作底图的地形图数据没有,表示可以使用百度地图作为底图.所以才会有使用Ar ...

  7. ArcGIS.Server.9.3和ArcGIS API for JavaScript实现Identify功能(六)

    目的: 1.ArcGIS.Server.9.3和ArcGIS API for JavaScript实现Identify功能,鼠标点击后获取被点击对象的然后以infoWindow的方式显示点击对象的属性 ...

  8. 初学ArcGIS API for JavaScript

    初学ArcGIS API for JavaScript 对于初学者来说,关于esri提供的一些样式和dojo自带的一些样式还是需要有一定的了解,这块在<WebGIS开发从基础到实践>讲解的 ...

  9. ArcGIS API for JavaScript Bookmarks(书签)

    说明:本篇博文介绍的是ArcGIS API for JavaScript中的 Bookmarks(书签) ,书签的作用是,把地图放大到一个地方 添加书签,书签名称可以和地图名称一直,单击标签 地图会定 ...

最新文章

  1. python使用redis队列_【Python】python使用redis做队列服务
  2. 数据结构与算法笔记(十二)—— 查找算法(顺序查找、二分法查找)
  3. div border-radius
  4. linux 超时 tcp,Linux中TCP设置syn超时时间
  5. java读取http请求中的body
  6. GARFIELD@01-19-2005
  7. [CTSC2017]吉夫特(Lucas定理,DP)
  8. php 手机屏幕,90hz和60hz手机屏幕差别大吗
  9. 由.Net类库提供的农历计算(C#农历)
  10. slurm安装配置_安装Slurm_鲲鹏高性能计算解决方案_安装指南_Slurm 18.08.7 安装指南_Slurm的安装配置_华为云...
  11. 微服务升级_SpringCloud Alibaba工作笔记0022---Nacos之Group分组方案
  12. 智能摄像机的网络安全如何保障?
  13. python有什么用-Python到底有什么用?为什么那么多人都在学Python?
  14. 数据挖掘(七) DBSCAN聚类算法
  15. OpenStack DVR 原理深入分析
  16. wind7计算机控制面板在哪,Win7控制面板在哪打开|win7打开控制面板的小技巧
  17. PAT甲级1143 Lowest Common Ancestor (30 分):[C++题解]LCA、最低公共祖先
  18. 竟然在GitHub标星27k+阿里大牛肝出的443页TCP/IP协议趣谈笔记,有何神奇之处?
  19. python视觉识别库_机器视觉、模式识别库汇总
  20. unity建立项目崩溃:failed to decompress

热门文章

  1. Effective C++ 读书笔记之Part2.Constructors, Destructors, and Assignment Operators
  2. 七、发生交通事故后的自救、急救等基本知识,以及常见危险化学品等知识
  3. 土人系列AS入门教程--实战篇
  4. vs.net web项目使用visual source safe进行源代码管理(转)
  5. TPU3.0今日上岗!谷歌AI芯片甩竞争对手好几条街!
  6. les物流执行系统_物流规划工作如何开展?
  7. 红帽linux7注册,redhat7.2 解决注册问题 yum
  8. 建立索引和主外约束_Mysql索引原理
  9. js 获取域名_确定你会使用JS操作Url吗?
  10. 003_FastDFS分布式横向扩容和纵向添加storage