删除或删除vector.layer中的功能

时间:2016-09-09 05:57:11

标签: javascript openlayers-3

现在,我在删除已经在openlayers上显示的实体时遇到了问题。 我有两个KML来源,包含车辆的路径。

kml1 10个地标 kml2 50个地标

我首先显示存储在 start.vectorsource 变量中的kml1加载页面 并在使用需要显示kml2的工具并存储在start.vectorfiltered变量中之后。 比较两个变量内容,以便在 start.vectorsource 中存在start.vectorfiltered元素(要素)时,会删除此项 以下是代码的摘录:

start.vectorsource.getSource().forEachFeature(function (feature) {
            if (typeof feature.getId() !== "undefined") {
                if (feature.getId().indexOf(mobileName) !== -1) {
                    entity.push(feature.getId());
                }
            }

        });
        start.vectorfiltered.getSource().getFeatures().forEach(function (feature) {
            if (typeof feature.getId() !== "undefined") {
                for (var k = 0; k < entity.length; k++) {
                    if (feature.getId() === entity[k]) {
                        console.log(feature.getId() + " " + entity[k]);
                        start.vectorsource.getSource().removeFeature(feature);
                    }
                }
            }
            interfaces.newFeature.push(feature);
        });

我分析一个start.vectorsource来检索项目ID(feature.getId()),如果它包含车辆名称(mobilename),我正在查找ID。 如果有,我将ID存储在变量实体

我分析了一个start.vectorfiltered并与变量实体进行比较,如果它们相等,它会通过其ID删除start.vectorsource中的特征。

以下是错误获取:

TypeError: this.s[b] is undefined http://localhost:7299/js/ol3/ol.js Line 636

1 个答案:

答案 0 :(得分:0)

我认为问题来自于您没有实际ID,因此feature.getId()将无效。

请改为feature.get('id')这可能是因为您的ID只是该功能的一个属性