百度地图鼠标绘制工具DrawingManager overlaycancel事件回调没有触发解决方案

最近使用百度地图碰到了一个问题,使用鼠标绘制工具DrawingManager,官方的文档里面只有绘制成功的回调函数,并没有取消绘制的回调函数。后面查了很多文档无果之后,只得去看源码了,源码上面参考绘制成功的回调函数,对其源码做了一些修改,结果就可以触发失败的回调了,具体操作如下:

源码里搜索'overlaycomplete',定位到i.prototype._dispatchOverlayComplete,然后再下面添加

 // 给源码添加上取消的回调事件
  i.prototype._dispatchOverlayCancel = function (m, n) {
    var l = { overlay: m, drawingMode: this._drawingType }; if (n) { l.calculate = n.data || null; l.label = n.label || null } this.dispatchEvent(this._drawingType + "cancel", m); this.dispatchEvent("overlaycancel", l); 
  };

再定位'_dispatchOverlayComplete'这个函数,找到n._dispatchOverlayComplete(p),在其下面加上n._dispatchOverlayCancel(p)

再定位'document.getElementById("cancelOperate")',在这个函数下面填上n.DingwingManager ._dispatchOverlayCancel(l, r)

然后再调用的时候DrawingManager.addEventListener('overlaycancel', function (e) {

console.log('取消事件',e)

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
百度地图鼠标绘制工具库提供了工具栏的显示和隐藏控制,可以通过配置 `drawingToolOptions` 对象中的 `anchor` 和 `offset` 属性来控制工具栏的位置和偏移量,通过配置 `enableDrawingTool` 属性来控制工具栏的显示和隐藏,下面是一个示例代码: ```javascript var drawingManager = new BMapLib.DrawingManager(map, { isOpen: false, // 是否开启绘制模式 enableDrawingTool: true, // 是否显示工具drawingToolOptions: { anchor: BMAP_ANCHOR_TOP_RIGHT, // 工具栏位置 offset: new BMap.Size(5, 5), // 工具栏偏移量 drawingModes: [ // 可以在工具栏中显示的绘制模式 BMAP_DRAWING_MARKER, BMAP_DRAWING_POLYLINE, BMAP_DRAWING_CIRCLE, BMAP_DRAWING_RECTANGLE, BMAP_DRAWING_POLYGON ] }, circleOptions: { strokeWeight: 2, // 圆形边线宽度 fillColor: "#ffffff", // 圆形填充颜色 strokeColor: "#ff0000", // 圆形边线颜色 strokeOpacity: 0.8, // 圆形边线透明度 fillOpacity: 0.6, // 圆形填充透明度 strokeStyle: "solid", // 圆形边线样式 }, }); ``` 在上述代码中,`drawingToolOptions` 对象中的 `drawingModes` 数组中只包含了 `BMAP_DRAWING_MARKER`、`BMAP_DRAWING_POLYLINE`、`BMAP_DRAWING_CIRCLE`、`BMAP_DRAWING_RECTANGLE`、`BMAP_DRAWING_POLYGON` 绘制模式,这些绘制模式会在工具栏中显示。如果你不需要工具栏中显示某些绘制模式,可以将它们从 `drawingModes` 数组中删除即可。如果你需要隐藏整个工具栏,可以将 `enableDrawingTool` 属性设置为 `false`。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值