Openlayers 3:交互 DragBox 不工作
Openlayers 3 : Interaction DragBox not working
我有一个 OpenLayers v3 的错误(无论它在 V3 中是哪个版本)。我尝试将 ol.interaction.DragBox 添加到我的地图,但是当我开始拖动时,ol.js 崩溃并显示消息:
ol.js:201 Uncaught TypeError: Cannot read property 'f' of null
at Array. (ol.js:201)
at 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);
在这里你可以找到 fiddle : http://jsfiddle.net/3svztkot/2/
在这里您可以找到一个fiddle v4.1.0,具有完全相同的代码,但在这里它是完全可操作的! : http://jsfiddle.net/872cuk52/2/
关于这个有一些已知的错误吗?我搜索了像我这样的以前的案例,但没有成功。感谢您的帮助!
好的,我找到问题了。这是问题的"why",也许以后对其他人有用。
在 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 的错误(无论它在 V3 中是哪个版本)。我尝试将 ol.interaction.DragBox 添加到我的地图,但是当我开始拖动时,ol.js 崩溃并显示消息:
ol.js:201 Uncaught TypeError: Cannot read property 'f' of null
at Array. (ol.js:201) at 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);
在这里你可以找到 fiddle : http://jsfiddle.net/3svztkot/2/
在这里您可以找到一个fiddle v4.1.0,具有完全相同的代码,但在这里它是完全可操作的! : http://jsfiddle.net/872cuk52/2/
关于这个有一些已知的错误吗?我搜索了像我这样的以前的案例,但没有成功。感谢您的帮助!
好的,我找到问题了。这是问题的"why",也许以后对其他人有用。
在 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至少定义了交互的默认样式,才不会崩溃