我在OpenLayers v3中有一个bug (不管它是在V3中的哪个版本)。我试图将一个ol.interaction.DragBox添加到我的地图中,但是当我开始拖动时,ol.js会崩溃,其中包含消息:
ol.js:201 Uncaught :无法读取空属性f 在阵列。(ol.js:201)在zm (ol.js:245) at bq (ol.js:370) at aq.ve (ol.js:371) at W.l.Kn (ol.js:453) at 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);在这里你可以找到一把小提琴:http://jsfiddle.net/3svztkot/2/
在这里,您可以找到与v4.1.0完全相同的代码,但在这里,它是完全可操作的!:http://jsfiddle.net/872cuk52/2/
关于这件事有什么已知的错误吗?我以前找过像我这样的案子,但没有成功。谢谢你的帮助!
发布于 2017-05-02 14:44:48
好吧,我发现问题了。以下是问题的“原因”,也许以后会对其他人有用。
在Open层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至少为交互定义了默认样式,因此不会崩溃。
https://stackoverflow.com/questions/43740572
复制相似问题