var drawingManager = new BMapLib.DrawingManager(map, {
isOpen: false, //是否开启绘制模式
enableDrawingTool: true, //是否显示工具栏
drawingToolOptions: {
anchor: BMAP_ANCHOR_TOP_RIGHT, //位置
offset: new BMap.Size(5, 5), //偏离值
scale: 0.8, //工具栏缩放比例
//工具栏显示数据
drawingModes:[
BMAP_DRAWING_MARKER,
BMAP_DRAWING_POLYGON
]
},
polylineOptions: styleOptions, //线的样式
polygonOptions: styleOptions, //多边形的样式
rectangleOptions: styleOptions //矩形的样式
});


//绘图回调函数
drawingManager.addEventListener('overlaycomplete', overlaycomplete);

//完成后回调 
var overlaycomplete = function(e){ 

// alert('end');
// map.removeOverlay(pointArray[0]); //清除上一次标记 
// pointArray = []; 
// overlays.push(e.overlay); //将用户点击的坐标保存进数组,方便清除 
// getPoint(e.overlay.$); 
// pointArray.push(e.overlay); 
//alert('end');
alert('监测到polygon完成事件');
alert(e.drawingMode);
alert(e.overlay);
alert(e.calculate);
alert(e.label);
}; 

 

上述代码的问题在于,函数未事先定义,就进行事件的监测和回调,所以调用不成功。

 

var drawingManager = new BMapLib.DrawingManager(map, { 
isOpen: false, //是否开启绘制模式 
enableDrawingTool: true, //是否显示工具栏 
drawingToolOptions: { 
anchor: BMAP_ANCHOR_TOP_RIGHT, //位置 
offset: new BMap.Size(5, 5), //偏离值 
scale: 0.8, //工具栏缩放比例 
//工具栏显示数据 
drawingModes:[ 
BMAP_DRAWING_MARKER, 
BMAP_DRAWING_POLYGON 

}, 
polylineOptions: styleOptions, //线的样式 
polygonOptions: styleOptions, //多边形的样式 
rectangleOptions: styleOptions //矩形的样式 
}); 

//完成后回调 
var overlaycomplete = function(e){ 

// alert('end');
// map.removeOverlay(pointArray[0]); //清除上一次标记 
// pointArray = []; 
// overlays.push(e.overlay); //将用户点击的坐标保存进数组,方便清除 
// getPoint(e.overlay.$); 
// pointArray.push(e.overlay); 
//alert('end');
alert('监测到polygon完成事件');
alert(e.drawingMode);
alert(e.overlay);
alert(e.calculate);
alert(e.label);
}; 

//绘图回调函数
drawingManager.addEventListener('overlaycomplete', overlaycomplete);