Javascript Openlayers 3:交互DragBox不工作
我有一个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一起使用时使用的 代码如下: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一起使用时使用的 代码
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至少为交互定义了一个默认样式,因此不会崩溃