arcgis js api前端完成面積測算


想找一個不依賴GeometryService量算面積的方法,經過別人的幫助,終於在js幫助頁上找到了。就是esri/geometry/geodesicUtils中的geodesicAreas方法,該方法通過Geometry獲取其面積,在geodesicUtils還有一個獲取幾何要素長度的方法,geodesicLengths,可以用來獲取長度。

當然,在使用這些方法之前,有些需要將Geometry轉換一下投影,可以使用Geometry下的webMercatorUtils,在其中有webMercatorToGeographic(geometry)和geographicToWebMercator(geometry)這兩個方法。不然,轉出來的面積長度有可能是不對的。
 
下面是我做的一個例子,結合了draw這個方法:
畫線和畫面:
function measureLenght() {
            toolbar.activate(esri.toolbars.Draw.POLYLINE);
        }
        function measureArea() {
            toolbar.activate(esri.toolbars.Draw.POLYGON);
        }
在地圖初始化的時候添加監聽畫圖的事件:
            dojo.connect(toolbar, "onDrawEnd", GetLenthorArea);
 
量算面積和長度方法:
function GetLenthorArea(geometry) {//畫圖完畢后計算距離或者面積
            if (geometry.type == "polyline") {
                var geo = esri.geometry.webMercatorToGeographic(geometry);
                var Length = esri.geometry.geodesicLengths([geo], esri.Units.METERS);
 
                Map.infoWindow.setContent("距離:" + Length+ "米");
                Map.infoWindow.show();
            }
            else if(geometry.type == "polygon") {
                var geo = esri.geometry.webMercatorToGeographic(geometry);
                var Area = esri.geometry.geodesicAreas([geo], esri.Units.SQUARE_METERS);
                Map.infoWindow.setContent("面積:" + Area + "平方米");
                Map.infoWindow.show();
            }
        }
 
最后,別忘了添加引用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM