ユーザーは、サイドバーにある機能にすばやく切り替えることができます。サイドバーの特定のdivをクリックすると、divをメインエリアに移動し、メインエリアのdivをサイドバーに移動する(スワップコンテンツ)。したがって、CSSクラスとそのdivのDOM位置を入れ替えるjavascript関数を実装しました。DOM操作後に空のOpenLayersキャンバス
var node1 = document.querySelector(".one");
var node2 = document.querySelector(".other");
node1.classList.toggle("other");
node1.classList.toggle("one");
node2.classList.toggle("one");
node2.classList.toggle("other");
var clone1 = node1.cloneNode(true);
var clone2 = node2.cloneNode(true);
node2.parentNode.replaceChild(clone1, node2);
node1.parentNode.replaceChild(clone2, node1);
たとえば、divの画像などでうまく動作します。単純なOpenLayersマップをそれらのdivの1つに入れると、マップをクリックしてメインエリアまたはサイドバーにスワップするまで、必要なように表示されます。空のキャンバス上で、コントロールと属性ボタン(少なくとも後者は機能しません)のみを取得します。
"use_strict";
var Map = {};
Map.locationLonLat = [0, 51.477222];
Map.zoom = 15;
Map.initMap = function() {
var map = new ol.Map({
target: "map",
layers: [
new ol.layer.Tile({
source: new ol.source.OSM(),
alpha: true,
isBaseLayer: true,
}),
],
view: new ol.View({
center: new ol.proj.fromLonLat(Map.locationLonLat),
zoom: Map.zoom,
}),
});
}
私はおそらく必要なのは、マップの更新です(と私はStackOverflowの上で提供される方法のいくつかを試してみましたが、リフレッシュのように、レンダリング、再描画、updateSizeなど)が、私ももう一度マップを初期化しようとした(よう私はもともと) - 無駄に。
<div class="sidebar" onclick="Util.swapNodes(event); Map.initMap();">
何が起こっているのですか?