ArcGIS 测量距离和面积以及清除绘画

本文介绍了一种在地图上进行距离和面积测量的方法。通过绘制线和面,并利用特定服务计算几何图形的实际长度和面积。支持清除绘图,便于重复测量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

              //测量距离
              $("#measure1").click(function () {
                    var draw = new Draw(map);
                    //画线
                    draw.activate(Draw.POLYLINE);
                    draw.on("draw-complete", function (evt) {
                        var line = new SimpleLineSymbol();
                        map.graphics.add(new Graphic(evt.geometry, line));
                        draw.deactivate();
                        //将画的线的evt(有geometry属性)传入测距方法中计算距离
                        MeasureAreaorLength(evt, "线");
                    })
                })
                
				//测量面积
               $("#measure2").click(function () {
                    var draw = new Draw(map);
                    //画面
                    draw.activate(Draw.POLYGON);
                    draw.on("draw-complete", function (evt) {
                        var fill = new SimpleFillSymbol();
                        map.graphics.add(new Graphic(evt.geometry, fill));
                        draw.deactivate();
                        //将画的线的evt(有geometry属性)传入测距方法中计算距离
                        MeasureAreaorLength(evt, "面");
                    })
                })
                
				//清除绘画
                $("#BtnDel").click(function(){
                     map.graphics.clear();
                })
                function MeasureAreaorLength(evt, geometrytype) {
                    //判断是测距还是测面
                    if (geometrytype == "线") {
                        //lengths(lengthsParameter, callback?, errback?)中的参数
                        var lengthParams = new LengthsParameters();
                        lengthParams.lengthUnit = GeometryService.UNIT_METER;
                        lengthParams.geodesic = true;
                        lengthParams.polylines = [evt.geometry];
                        //参数传入方法中
                        geoservice.lengths(lengthParams, function (res) {//成功时回调函数
                            console.log("距离是:" + Number(res.lengths[0]).toFixed(3) + "米");
                            $("#divPOLYLINE").val("距离是:" + Number(res.lengths[0]).toFixed(3) + "米");
                        }, function (err) {//失败时回调函数
                            console.log(err)
                        });
                    } else if (geometrytype == "面") {
                        //areasAndLengths(areasAndLengthsParameters, callback?, errback?)中的参数
                        var areasAndLengthParams = new AreasAndLengthsParameters();
                        areasAndLengthParams.areaUnit = GeometryService.UNIT_SQUARE_METERS;
                        //参数传入方法中
                        geoservice.simplify([evt.geometry], function (simplifiedGeometries) {
                            areasAndLengthParams.polygons = simplifiedGeometries;
                            geoservice.areasAndLengths(areasAndLengthParams, function (res) {//成功时回调函数
                                console.log("面积是:" + Number(res.areas[0]).toFixed(3) + "平方米");
                                $("#divPOLYGON").val("面积是:" + Number(res.areas[0]).toFixed(3) + "平方米");
                            });
                        }, function (err) {//失败时回调函数
                            console.log(err)
                        });
                    }
                }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值