gpt4 book ai didi

javascript - OpenLayers ol-debug.js 提供 ol.js 属性

转载 作者:行者123 更新时间:2023-11-29 23:11:56 25 4
gpt4 key购买 nike

我用的是 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 属性的等价物?

最佳答案

你可以使用 feature.getId();要获取它的 ID,我忘记了它是否会自动创建它,如果它没有(返回未定义或 null),您可以设置它。 feature.setId();如果我没记错的话。

您也可以在创建时分配它。将其保存在全局值上,然后通过 getFeatureByID 重新使用它(我不认为该函数的调用方式与此完全相同)。

var feature = new ol.Feature({
geometry: new ol.geom.Point([0, 0]),
id: 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,在我的情况下这不是真的,但请注意这一点。

关于javascript - OpenLayers ol-debug.js 提供 ol.js 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53739052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com