首页 文章

OpenLayers ol-debug.js 规定 ol.js 财产

提问于
浏览
2

我用过 OpenLayers 4.1.1

我有一个用 ol-debug.js 编写的函数

我的目标是手动输入第一个坐标并简单地绘制线串。

ol.interaction.Draw.prototype.startDrawing_ = function (event) {
    var start = event.coordinate;
    this.finishCoordinate_ = start;
    if (1 == 1) {
        this.sketchCoords_ = [start.slice(), start.slice()];
    }
    console.log(this.sketchCoords_);
    var geometry = geometryFunction_(this.sketchCoords_);
    //console.log(geometry);
    this.sketchFeature_ = new ol.Feature();
    this.sketchFeature_.setGeometry(geometry);
    console.log(this.sketchFeature_)
    this.updateSketchFeatures_();
    this.dispatchEvent(new ol.interaction.Draw.Event("drawstart", this.sketchFeature_));
   }

我的 ol-debug.js 代码有效但我需要在项目中使用 ol.js。由于压缩,ol-js 正在更改这些属性的名称。我想在我的函数中更改这些属性,但我没有找到哪一个对应于哪一个。如何找到 ol.js 的 ol-debug.js 属性的等价物?

1 回答

  • 1

    你可以使用feature.getId();获取它的 id,我忘了它是否自动创建它,如果它不是(返回 undefined 或 null)你可以设置它。 feature.setId();如果我没记错的话。

    您可以在创建它时分配它。将它保存在全局值上,然后将其与 getFeatureByID 一起使用(我不认为函数的调用完全相同)。

    var feature = new ol.Feature({
       geometry: new ol.geom.Point([0, 0]),
       id: id
    });
    

    如果需要重置多个对象。您可以使用图层(清除所有图层,然后使用新元素重新绘制图层)。顺便说一句:如果我没记错的话,你可能会正确地做到这一点,但是你必须在修改其中的一些特征之后重新绘制图层,否则它仍会记住相同的几何图形。

    因此,当您获得 ID 时,您可以将其推送到全局数组,然后重新使用它,这样您就可以知道哪个是哪个。

    现在我不确定你的活动是什么(我认为这是你的另一个功能.你可以打印出来,看看它是否已经准备就绪,也可以使用它.

    要按特定 ID 获取元素,您应该yourLayer.getFeatureById(featureID).getGeometry().getCoordinates());

    我在我的代码中检查了它,好像我得到了 ID:

    var vmarkf = new OpenLayers.Feature.Vector(coords, null, style);
    vmarkf.id;
    

    所以我认为它是自动生成的,你真的不需要自己设置它。

    我找到了这个功能:layer.getFeatureById(vmarkf.id));

    有些人说你需要自己设置 ID,在我看来这不是真的,但要注意这一点。

相关问题