gpt4 book ai didi

javascript - OpenLayers 2.13.1 : deleting a geometry from a multigeometry feature

转载 作者:行者123 更新时间:2023-12-04 01:21:20 25 4
gpt4 key购买 nike

例如,我有一个由两个多边形组成的多边形。我可以使用 modifyFeature 控件和删除键删除顶点。但是,modifyFeature 控件不允许我完全删除多边形,因为它必须包含至少 3 个顶点。如何从多面要素中完全删除多边形(使用删除键)?是否有适合 OpenLayers 的控件或插件?

我自己尝试了修补控件,但这导致了多个小错误。所以我想在我花很多时间解决问题之前先问问是否有人已经这样做了。

最佳答案

removeComponent: function(point) {
var removed = this.components && (this.components.length > 3);
if (removed) {
//remove last point
this.components.pop();

//remove our point
OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,
arguments);
//append copy of first point
var firstPoint = this.components[0];
OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,
[firstPoint]);
//bm extension: possibility to delete geometry from multigeometries
} else if (this.components && this.parent && this.parent.parent && this.parent.parent.CLASS_NAME === "OpenLayers.Geometry.MultiPolygon") {
//polygon with hole
if (this.parent.components.length > 1) {
for (var i = 0; i < this.parent.components.length && this.parent.components.length > 1; i++) {
if (this.parent.components[i].id === this.id) {
OpenLayers.Util.removeItem(this.parent.components, this.parent.components[i]);
this.parent.clearBounds();
return true;
}
}
}
//seperate polygon
for (var i = 0; i < this.parent.parent.components.length && this.parent.parent.components.length > 1; i++) {
if (this.parent.parent.components[i].id === this.parent.id) {
OpenLayers.Util.removeItem(this.parent.parent.components, this.parent.parent.components[i]);
this.parent.parent.clearBounds();
return true;
}
}
}
return removed;
},

关于javascript - OpenLayers 2.13.1 : deleting a geometry from a multigeometry feature,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24238711/

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