本文主要是介绍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) --关闭拖动
这篇关于openlayer绘图时禁止移动地图的两种方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!