我们有时候会遇到这样一种需求:地图上已经产生了一些点,需要手动在这些点之间画线连接。
分析:
我们知道OpenLayers原生的ol.interaction.Draw类型是无法支持这种限制的。于是仍然考虑在事件处理上找找机会:ol.interaction.Draw有一个属性condition,它的定义是一个函数,接受event作为参数(实际上只限于click类型的event),然后由函数的逻辑决定返回值ture还是false,以此通知控件是否处理本次点击绘制。
实现:
先在这里试试,在ol.interaction.Draw初始化的时候给condition赋值:
condition: function(event) {
let flag = 0; let features = map.getFeaturesAtPixel(event.pixel) features.some(element => {
if (vSource.hasFeature(element)) {
flag = 1; return true } }); if (flag == 1) return true; }