在搭建好WebGIS應用框架的時候,相信你們首先開發的都會是基礎功能,此篇文章咱們主要講述的是「測距」、"測面"功能。框架
注* 在測量單位中常規都是基於"平面座標系"而言,因此若是你的座標系是"地理座標系",則須要找到對應的座標轉換參數來進行轉換。工具
此功能的流程爲「圖形繪製」-> "距離計算"-> "要素標註"。spa
測距核心代碼以下code
export default function measureDist(view) { //開啓繪製工具 let draw = new Draw({ view: view }); view.graphics.removeAll(); enableCreatePolyline(draw, view); } /*** * 繪製測距線 */ function updateVertices(event) { var vertices = event.vertices; view.graphics.removeAll(); var graphic = createPolylineByVertices(vertices,view.spatialReference); view.graphics.add(graphic); let show_point; if (vertices.length >= 2) { let _totalDist = 0; for (let i = 1; i < vertices.length; i++) { let label; show_point = new Point({ x: vertices[i][0], y: vertices[i][1], spatialReference: view.spatialReference }); let everyGraphic = createPolylineByVertices([vertices[i],vertices[i-1]],view.spatialReference); ……
測面核心代碼以下blog
export default function measureArea(view) { //開啓繪製 let draw = new Draw({ view: view }); view.graphics.removeAll(); enableCreatePolygon(draw, view); } function enableCreatePolygon(draw, view) { let viewClickHandler; const _deg = 180 / Math.PI; const _rad = Math.PI / 180; let action = draw.create("polygon"); view.focus(); action.on("vertex-add", drawPolygon); action.on("cursor-update", drawPolygon); action.on("vertex-remove", drawPolygon); action.on("draw-complete", drawPolygon); /*** * 繪製測面圖形 * @param event */ function drawPolygon(event) { let vertices = event.vertices; view.graphics.removeAll(); let graphic = createPolygonByVertices(vertices,view.spatialReference); view.graphics.add(graphic); let areaValue; let label ……
更多的詳情見:GIS之家小專欄開發
對本專欄感興趣的話,能夠關注一波rem