使用Arcgis for API Javascript 自带的sketch“草图”微件更加高效快捷实现地图上面积的计算

AreaUse() {

      try {

        var me = this;

        var view = this.view;

        var map = this.map;

        me.$message({

            message: "开始计算面积计算",

            type: "success",

            customClass: "message",

          });

        let options = {

            url: 'https://js.arcgis.com/4.26/',

            css: 'https://js.arcgis.com/4.26/esri/themes/light/main.css'

        };

        loadModules(["esri/widgets/Sketch","esri/layers/GraphicsLayer", "esri/geometry/geometryEngine"],options)

        .then(([Sketch,GraphicsLayer,geometryEngine]) => {

          let layer_areaUse = new GraphicsLayer();

          map.add(layer_areaUse);

          me.layer_areaUse = layer_areaUse;

            // 添加"草图"微件

          const sketch = new Sketch({

            layer: layer_areaUse,

            view: view,

            availableCreateTools: ["polygon"],

            creationMode: "update",

            updateOnGraphicClick: true,

            visibleElements: {

              createTools: false,

              selectionTools:false,

              settingsMenu: false,

              undoRedoMenu: false

            }

          });

          sketch.create("polygon"); // 绘制形状

          sketch.on("update", (e) => {

          const geometry = e.graphics[0].geometry;

            if (e.state === "start") {

              const dis = geometryEngine.geodesicArea(geometry, "square-meters");

              me.$alert(

                "<div><span>" +

                  "面积计算" +

                  "</span>" +

                  "<i class='iconfont icon-wanjiantou'>" +

                  "</i>" +

                  "<ul>" +

                  "<li>" +

                  dis.toFixed(2) + " m2" +

                  "</li>" +

                  "</ul></div>",

                  "面积",

                {

                  dangerouslyUseHTMLString: true,

                  showConfirmButton: false,

                  customClass: "heightCHA",

                  callback: (action) => {},

                }

              );

            }

            if (e.state === "complete") {

              layer_areaUse.remove(layer_areaUse.graphics.getItemAt(0));

            }

          });

        })

      } catch (error) {

        console.log(error);

      }

    },

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值