开放层 3:加载矢量特征上的交互

Openlayers 3: interactions on loaded vector features

本文关键字:特征 交互 加载      更新时间:2023-09-26

当我使用地图交互时,从这个例子中,从头开始创建特征集合进展顺利:

var features = new ol.Collection();

但是当我尝试在导入要素上定义地图交互时:

var geojsonObject = { ...a well defined (visible) GeoJSON object ...};
var features = new ol.format.GeoJSON().readFeatures(geojsonObject)

我得到以下异常:

错误:addEventListener 和 attachEvent 不可用。(.js:34:302)

当我在修改交互定义中使用特征集合时:

modifyInteraction = new ol.interaction.Modify({
                features: features,
                deleteCondition: function(event) {
                    return ol.events.condition.shiftKeyOnly(event) &&
                    ol.events.condition.singleClick(event);
                }
            });
您是否将

特征附加到矢量源和 f.ex ol.layer.Vector?

这行代码

var features = new ol.format.GeoJSON().readFeatures(geojsonObject)

返回特征数组,而不是特征ol.Collection

另一方面,ol.interaction.Modify希望获得features参数作为特征的ol.Collection。我怀疑这就是你的错误的来源。

尝试将上面的代码行与此

var features = new ol.Collection(new ol.format.GeoJSON().readFeatures(geojsonObject));

请注意,以上所有内容都会对最新版本的 ol3 产生影响。