arcgis for javascript 画图结束添加多个图形问题

本文介绍了一种在Draw工具中实现图形递增绘制的方法,通过在每次绘制完成后使用event.stop(evt)来阻止默认事件的执行,避免了图形重复添加的问题。同时,提供了将drawToolbar设为局部变量作为另一种解决方案。

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

在Draw工具中 draw-end(画图结束后想地图添加图形)

发现第一次添加一个图形,第二次添加两个图形,第三次添加三个图形,依次递增

//新增图形
function addLifeBoundary(){
	alert("新增图形");
	lifeFeatureLayer.clearSelection();
	lifeFeatureLayer.refresh();
	drawToolbar.activate(Draw.POLYGON);
	lifeFeatureLayer.remove(newGraphic);
	drawToolbar.on("draw-complete", addToMap);
	//drawToolbar.deactivate();
	
}
function addToMap(evt) {
	var polygonSymbol = new SimpleFillSymbol(
            SimpleFillSymbol.STYLE_SOLID, 
            new SimpleLineSymbol(
              SimpleLineSymbol.STYLE_SOLID, 
              new Color([151, 249, 0, 0.8]),
              3
            ), 
            new Color([151, 249, 0, 0.45])
          );
	
	var newGraphic1 = new Graphic(evt.geometry,polygonSymbol);
	lifeFeatureLayer.applyEdits([newGraphic1],null, null);
	
	drawToolbar.finishDrawing();
	
	drawToolbar.deactivate();	
	map.removeLayer(lifeFeatureLayer);
	map.addLayer(lifeFeatureLayer);
	event.stop(evt);//停止本次事件(保存的时候容易保存上次的图形,并且依次递增)
}

解决方法就是

添加个event.stop(evt)

event.stop(evt)具体写法

dojo.addOnLoad(function(){
    var node = dojo.byId("delete");
    dojo.connect(node, "onclick", function(e){
        dojo.stopEvent(e); // prevents default link execution
        // some code custom execution
    });
});

<a href="/delete" id="delete">Delete</a>


上面是禁用事件的方法

另一种方法就是把drawtoolbar 设置成局部变量


顺便记录下禁用图层点击

layer.on("click",function(evt){
     event.stop(evt);
});





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

筱芙淘趣坊

为嗷嗷待哺的我助力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值