Javascript Openlayers 3:交互DragBox不工作

Javascript Openlayers 3:交互DragBox不工作,javascript,openlayers,openlayers-3,Javascript,Openlayers,Openlayers 3,我有一个OpenLayers v3的bug(无论它在v3中是哪个版本)。我尝试将ol.interaction.DragBox添加到地图中,但当我开始拖动时,ol.js崩溃,并显示以下消息: ol.js:201未捕获类型错误:无法读取null的属性“f” 在阵列上。(ol.js:201) 在zm(ol.js:245) 在bq(ol.js:370) 在aq.ve(ol.js:371) 在W.l.Kn下(ol.js:453) 在oi.f(ol.js:142) 这是在与v3.9.0一起使用时使用的 代码

我有一个OpenLayers v3的bug(无论它在v3中是哪个版本)。我尝试将ol.interaction.DragBox添加到地图中,但当我开始拖动时,ol.js崩溃,并显示以下消息:

ol.js:201未捕获类型错误:无法读取null的属性“f”

在阵列上。(ol.js:201) 在zm(ol.js:245) 在bq(ol.js:370) 在aq.ve(ol.js:371) 在W.l.Kn下(ol.js:453) 在oi.f(ol.js:142)

这是在与v3.9.0一起使用时使用的 代码如下:

var vectorSource = new ol.source.Vector({
        url: 'https://openlayers.org/en/v4.1.0/examples/data/geojson/countries.geojson',
        format: new ol.format.GeoJSON()
      });

var map = new ol.Map({
   target: 'map',
   layers: [
          new ol.layer.Tile({
            source: new ol.source.OSM()
          }),
          new ol.layer.Vector({
            source: vectorSource
          })
   ],
   view: new ol.View({
     center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'),
     zoom: 4
   })
});

var dragBox = new ol.interaction.DragBox({
  condition: ol.events.condition.platformModifierKeyOnly
});

map.addInteraction(dragBox);
在这里你可以找到一把小提琴:

在这里,您可以找到一个与v4.1.0完全相同的代码,但在这里它是完全可操作的!:


这里面有什么已知的bug吗?我搜索了以前类似的案例,但没有成功。谢谢你的帮助

好的,我发现了问题。这是问题的“原因”,也许以后对其他人有用

在Openlayers v3中,必须在交互中设置样式,如下所示:

var dragBox = new ol.interaction.DragBox({
    condition: ol.events.condition.shiftKeyOnly,
    style: new ol.style.Style({
        stroke: new ol.style.Stroke({
            color: [0, 0, 255, 1]
        })
    })
});

然后,它起作用了。看来OpenLayers 4.1.0至少为交互定义了一个默认样式,所以它不会崩溃。

好的,我发现了问题所在。这是问题的“原因”,也许以后对其他人有用

在Openlayers v3中,必须在交互中设置样式,如下所示:

var dragBox = new ol.interaction.DragBox({
    condition: ol.events.condition.shiftKeyOnly,
    style: new ol.style.Style({
        stroke: new ol.style.Stroke({
            color: [0, 0, 255, 1]
        })
    })
});
然后,它起作用了。似乎OpenLayers 4.1.0至少为交互定义了一个默认样式,因此不会崩溃