我用过 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 回答
你可以使用
feature.getId();
获取它的 id,我忘了它是否自动创建它,如果它不是(返回 undefined 或 null)你可以设置它。feature.setId();
如果我没记错的话。您可以在创建它时分配它。将它保存在全局值上,然后将其与 getFeatureByID 一起使用(我不认为函数的调用完全相同)。
如果需要重置多个对象。您可以使用图层(清除所有图层,然后使用新元素重新绘制图层)。顺便说一句:如果我没记错的话,你可能会正确地做到这一点,但是你必须在修改其中的一些特征之后重新绘制图层,否则它仍会记住相同的几何图形。
因此,当您获得 ID 时,您可以将其推送到全局数组,然后重新使用它,这样您就可以知道哪个是哪个。
现在我不确定你的活动是什么(我认为这是你的另一个功能.你可以打印出来,看看它是否已经准备就绪,也可以使用它.
要按特定 ID 获取元素,您应该
yourLayer.getFeatureById(featureID).getGeometry().getCoordinates());
我在我的代码中检查了它,好像我得到了 ID:
所以我认为它是自动生成的,你真的不需要自己设置它。
我找到了这个功能:
layer.getFeatureById(vmarkf.id));
有些人说你需要自己设置 ID,在我看来这不是真的,但要注意这一点。