openlayer绘图时禁止移动地图的两种方式

问题来源

出于防误操作的关系,我考虑到在地图绘制时禁止掉拖动地图的操作,在绘制结束才恢复回来。但直接用openlayer的Interaction的DragPan注册控件行不通,由此我实验得到以下两种方法。

方法一:利用draw里的freehand模式

核心就是多加入两个属性来限制draw的应用范围。
new ol.interaction.Draw({
		condition: ol.events.condition.mouseOnly,
		freehandCondition: ol.events.condition.noModifierKeys,
		source: source,
		type: 'LineString'
	});

方法二:利用已注册的DragPan来限制

既然自定义的不行,那就应该想到,初始化的时候地图就可以拖动,是不是意味着地图一开始就绑定好了拖动事件呢,事实证明是对的。既然如此,我就通过遍历拿到这个事件,再凭借事件来完成我想要的功能。(推荐原因:应用范围更广)。
var pan;
    map.getInteractions().forEach(function(element,index,array){
		if(element instanceof ol.interaction.DragPan) pan = element; 
	});
	
//使用: pan.setActive(true) --开启拖动  pan.setActive(false) --关闭拖动

转载自:https://blog.csdn.net/u013323965/article/details/53183532

You may also like...