javascript
arcgis api for javascript 距离与面积量算
在之前的實驗中,距離量算跟面積量算一直出問題,費了非常長的時間,各種調式找不到原因。
如今成功完畢。與君共勉
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 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 距离与面积量算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springBoot+maven的打包和
- 下一篇: python设计模式-观察者