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) --关闭拖动



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值