gpt4 book ai didi

javascript - 需要在OL3中克隆图层

转载 作者:行者123 更新时间:2023-12-03 05:13:19 25 4
gpt4 key购买 nike

如何在 OL3 中克隆图层?

目前我尝试这样做,但它给了我一个不同的对象,具有真实 ol.layer 的不同方面。就像您在内部控制台日志中看到的那样,我丢失了该层的实例,保留它对我来说很重要。

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://openlayers.org/en/v3.20.1/css/ol.css" type="text/css">
<!-- The line below is only needed for old environments like Internet Explorer and Android 4.x -->
<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=requestAnimationFrame,Element.prototype.classList,URL"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://openlayers.org/en/v3.20.1/build/ol.js"></script>

</head>
<body>
<div id="map" class="map" tabindex="0"></div>
<script>
var map = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
target: 'map',
view: new ol.View({
center: [0, 0],
zoom: 2
})
});
console.log("map layer is an instanceof ol.layer.tile? ", map.getLayers().getArray()[0] instanceof ol.layer.Tile)

function cloneLayer() {
map.getLayers().getArray().forEach(function(layer) {
var copyLayer = jQuery.extend(true, {}, layer);
console.log("CopyLayer is an instanceof ol.layer.tile? ", copyLayer instanceof ol.layer.Tile)
console.log("CopyLayer is equal to mapLayer? ", map.getLayers().getArray()[0] == copyLayer)
});
}

cloneLayer()

</script>
</body>
</html>

最佳答案

我正在尝试寻找一种需要克隆图层的情况,但我没有找到。

ol3 中的许多其他类都有其方法 clone 来执行此操作。克隆图层涉及复制源,该源具有功能和许多其他对象。

jQuery.extend 对于 DOM 元素来说效果很好,它是针对 DOM 对象制作的,see docs ,对于作为自定义类、原型(prototype)类的实例的复杂对象,就像所有的 ol 类一样,克隆对象比迭代其属性并复制每个对象要复杂得多。

因此,如果您需要具有相同特征的另一个图层,我建议您创建一个新图层并复制其选项。

或者,如果您能解释一下需要克隆图层的情况,也许我们可以有替代解决方案。

关于javascript - 需要在OL3中克隆图层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41709234/

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