首先量测

  1. var map, toolbar, geometryService ;
  2. function init() {
  3.  
  4. map=new esri.Map("map",{
  5. extent:new esri.geometry.Extent({xmin:110,ymin:31 ,xmax:117 ,ymax :37,spatialReference:{wkid:4326} })
  6. });//选取的空间坐标系范围
  7.  
  8. dojo.connect(map, "onLoad", initToolbar);
  9.  
  10. map.addLayer(new esri.layers.ArcGISTiledMapServiceLayer("url");
  11.  
  12. }
  13.  
  14. function initToolbar(map) {
  15.  
  16. toolbar = new esri.toolbars.Draw(map);
  17.  
  18. //添加toolbar画图完成后事件监听调用 doMeasure
  19. dojo.connect(toolbar, "onDrawEnd", doMeasure);
  20. //实例化GeometryService,地址为ags发布的GeometryServer
  21.  
  22. var geomrtryserver ="url2";
  23. geometryService = new esri.tasks.GeometryService(geomrtryserver);
  24.  
  25. }

  

  1. //量测
  2. function measutreLength() {
  3. toolbar.activate(esri.toolbars.Draw.POLYLINE);
  4. }
  5.  
  6. function measutreArea() {
  7. toolbar.activate(esri.toolbars.Draw.POLYGON);
  8. }

 

  1. //量算
  2. function doMeasure(geometry) {
  3. //更加类型设置显示样式
  4. measuregeometry = geometry;
  5. toolbar.deactivate();
  6. switch (geometry.type) {
  7. case "polyline":
  8. var symbol = new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([0, 0, 0]), 2);
  9. break;
  10. case "polygon":
  11. 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]));
  12. break;
  13. }
  14. //设置样式
  15. var graphic = new esri.Graphic(geometry,symbol);
  16. //清除上一次的画图内容
  17. map.graphics.clear();
  18. map.graphics.add(graphic);
  19. //进行投影转换,完成后调用projectComplete
  20. MeasureGeometry(geometry);
  21. }
  22.  
  23. //投影转换完成后调用方法
  24. function MeasureGeometry(geometry) {
  25. //如果为线类型就进行lengths距离测算
  26. if (geometry.type == "polyline") {
  27. var lengthParams = new esri.tasks.LengthsParameters();
  28. lengthParams.polylines = [geometry];
  29. lengthParams.lengthUnit = esri.tasks.GeometryService.UNIT_METER;
  30. lengthParams.geodesic = true;
  31. lengthParams.polylines[0].spatialReference = new esri.SpatialReference(4326);
  32. geometryService.lengths(lengthParams);
  33. dojo.connect(geometryService, "onLengthsComplete", outputDistance);
  34. }
  35. //如果为面类型需要先进行simplify操作在进行面积测算
  36. else if (geometry.type == "polygon") {
  37. var areasAndLengthParams = new esri.tasks.AreasAndLengthsParameters();
  38. areasAndLengthParams.lengthUnit = esri.tasks.GeometryService.UNIT_METER;
  39. areasAndLengthParams.areaUnit = esri.tasks.GeometryService.UNIT_SQUARE_METERS;
  40. this.outSR = new esri.SpatialReference({ wkid: 102113 });
  41. geometryService.project([geometry], this.outSR, function (geometry) {
  42. geometryService.simplify(geometry, function (simplifiedGeometries) {
  43. areasAndLengthParams.polygons = simplifiedGeometries;
  44. areasAndLengthParams.polygons[0].spatialReference = new esri.SpatialReference(102113);
  45. geometryService.areasAndLengths(areasAndLengthParams);
  46. });
  47. });
  48. dojo.connect(geometryService, "onAreasAndLengthsComplete", outputAreaAndLength);
  49. }
  50. }
  51.  
  52. //显示测量距离
  53. function outputDistance(result) {
  54. var CurX = measuregeometry.paths[0][measuregeometry.paths[0].length - 1][0];
  55. var CurY = measuregeometry.paths[0][measuregeometry.paths[0].length - 1][1];
  56. var CurPos = new esri.geometry.Point(CurX, CurY, map.spatialReference);
  57. map.infoWindow.setTitle("距离测量");
  58. map.infoWindow.setContent(" 测 量 长 度 : <strong>" + parseInt(String(result.lengths[0])) + "米</strong>");
  59. map.infoWindow.show(CurPos);
  60. }
  61.  
  62. //显示测量面积
  63. function outputAreaAndLength(result) {
  64. var CurX = (measuregeometry._extent.xmax + measuregeometry._extent.xmin) / 2;
  65. var CurY = (measuregeometry._extent.ymax + measuregeometry._extent.ymin) / 2
  66. var CurPos = new esri.geometry.Point(CurX, CurY, map.spatialReference);
  67. map.infoWindow.setTitle("面积测量");
  68. map.infoWindow.setContent(" 面积 : <strong>" + parseInt(String(result.areas[0])) + "平方米</strong> 周长:" + parseInt(String(result.lengths[0])) + "米");
  69. map.infoWindow.show(CurPos);
  70. //alert("面积:" + dojo.number.format(result.areas[0]) + "平方米" + " 长度:" + dojo.number.format(result.lengths[0]) + "米");
  71. }

  

 

ArcGIS api for javascript—测量,测距问题的更多相关文章

  1. ArcGIS API for JavaScript介绍

    ArcGIS API for JavaScript中的类是按照模块组织的,主要包含esri.esri/geometry.esri/renderers.esri/symbols.esri/symbols ...

  2. ArcGIS API for JavaScript 4.2学习笔记[5] 官方API大章节概述与内容转译

    内容如上,截图自ESRI官网,连接:ArcGIS API for JavaScript 4.2 [Get Started] 类似于绪论一样的东西,抽取了最需要关注的几个例子.如:加载Map和View, ...

  3. ArcGIS API for JavaScript 4.2学习笔记[0] AJS4.2概述、新特性、未来产品线计划与AJS笔记目录

    放着好好的成熟的AJS 3.19不学,为什么要去碰乳臭未干的AJS 4.2? 4.2全线基础学习请点击[直达] 4.3及更高版本的补充学习请关注我的博客. ArcGIS API for JavaScr ...

  4. ArcGIS API for JS 测量线长(各折线段)

    这里测量长度主要分为两个方面,一个是在绘制长折线段时,不仅需要显示总线段的长度,还要在各线段的中间显示各折线段的长度:另一个则是在绘制多边形时,不仅需要显示多边形的面积,还需要在各边的中间显示线段长. ...

  5. 基于ArcGIS API for Javascript的地图编辑工具

    最近工作上需要用ArcGIS API for Javascript来开发一个浏览器上使用的地图编辑工具,分享一下一些相关的开发经验. 我开发的地图编辑工具是根据ESRI提供的例子修改而来的,参考的例子 ...

  6. ArcGIS API for JavaScript(2)-ArcGIS Server发布要素图层服务

    1.前言 上一篇该系列的文章我们主要讲了一下基础Web地图搭建,这篇我们主要讲一下ArcGIS Server发布服务,并且如何调用服务.将自己的数据加载到Web地图当中来,实现Web端浏览数据. 2. ...

  7. ArcGIS API for JavaScript 4.0(一)

    原文:ArcGIS API for JavaScript 4.0(一) 最近ArcGIS推出了ArcGIS API for JavaScript 4.0,支持无插件3D显示,而且比较Unity和Sky ...

  8. ArcGIS API for JavaScript开发环境搭建及第一个实例demo

    原文:ArcGIS API for JavaScript开发环境搭建及第一个实例demo ESRI公司截止到目前已经发布了最新的ArcGIS Server for JavaScript API v3. ...

  9. 创建ArcGIS API for JavaScript的第一个示例程序

    原文:创建ArcGIS API for JavaScript的第一个示例程序 在上一篇博客中已经介绍了如何搭建ArcGIS API for JavaScript开发环境,如果您还没有搭建好开发环境的话 ...

随机推荐

  1. SpringMVC学习(二)——SpringMVC架构及组件(及其运行原理)-转载

    相信大家通过前文的学习,已经对SpringMVC这个框架多少有些理解了.还记得上一篇文章中SpringMVC的处理流程吗?  这个图大致描述了SpringMVC的整个处理流程,这个流程图还是相对来说比 ...

  2. CDR X6设计师的福利,3折特惠!

    最新消息称,即日起CorelDRAW官方为回馈新老用户长期以来的支持,特别推出CorelDRAW X6降价活动.目前CorelDRAW X6售价仅为2399元,照这个价格,CDR 2017     会 ...

  3. java中的json

    josn: 一种数据传输格式,与开发语言无关,轻量级 一开始是javaScript的,但是后面比较流传,几乎所有语言都有相应的使用API 数据结构: Object---对象 使用花括号{}包含的键值对 ...

  4. mac同时享受教育优惠和免手续费分期

    神奇地址:工商银行  http://store.apple.com/cn_icbc_edu招商银行  http://store.apple.com/cn_cmb_edu农业银行  http://sto ...

  5. 响应http报文中的Date属性与cookie过期时间的关系

    今天在測试.net时,发现一个莫名其妙的问题:cookie老是保存不到浏览器端; 经过细致的比对成功与不成功的报文,居然无意中发现好像Date与它有关系,这太让我意想不到了,从来不知道cookie保存 ...

  6. Jmeter添加响应断言

    1.使用Badboy录制登录页面->import to Jmeter 2.Jmeter打开保存的文件,在登录请求下添加响应断言

  7. select多选 multiple的使用

    select多选  multiple的使用 <html> <head> <script type="text/javascript"> func ...

  8. BsonDocument

    http://api.mongodb.com/csharp/current/html/T_MongoDB_Bson_BsonDocument.htm 如何取出document中的数据 BsonDocu ...

  9. 5.IntellijIDEA常用快捷键总结

    转自:https://blog.csdn.net/qq_17586821/article/details/52554731下面的这些常用快捷键需要在实际操作中不断地体会才能真正感受到它们的方便之处. ...

  10. [poj 2773] Happy 2006 解题报告 (二分答案+容斥原理)

    题目链接:http://poj.org/problem?id=2773 题目大意: 给出两个数m,k,要求求出从1开始与m互质的第k个数 题解: #include<algorithm> # ...