• arcgis api 4.x for js 基础工具篇之测距测面


    前言

    在搭建好WebGIS应用框架的时候,相信大家首先开发的都会是基础功能,此篇文章我们主要讲述的是“测距”、"测面"功能。

    注* 在测量单位中常规都是基于"平面坐标系"而言,所以如果你的坐标系是"地理坐标系",则需要找到对应的坐标转换参数来进行转换。

    效果图

    正文

    此功能的流程为“图形绘制”-> "距离计算"-> "要素标注"。

    测距核心代码如下

    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);
    ……

    测面核心代码如下

    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之家小专栏

    对本专栏感兴趣的话,可以关注一波

  • 相关阅读:
    Charles初体验
    基于工作量证明的哈希算法实验
    入侵检测软件Snort的使用实验
    基于netwox/netwag 工具的网络协议攻防实验
    jsonp原理
    案例:使用jquery的ajax load方法更新局部页面并应用NProgress库实现顶部进度条
    使用node文件模块封装一个学生数据操作API
    ES6 promise初体验
    nodejs中的路径和url操作
    使用nodejs和art-template模板引擎实现apache的部分功能
  • 原文地址:https://www.cnblogs.com/giserhome/p/11032697.html
Copyright © 2020-2023  润新知