OL3でレイヤーをクローンする方法はありますか?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>
私はそれをテストし、それは私のために働く。より多くのコードを提供すれば、より良い方法でお手伝いすることができます – Icarus
私はプランナーを追加します。あなたはそれが同等ではないことがわかり、レイヤーのインスタンスを失った... – FatAl