사용자가 사이드 바에있는 기능으로 빠르게 전환 할 수 있기를 바랍니다. 사이드 바에서 특정 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 중 하나에 넣으면 맵을 클릭하고 메인 영역 또는 사이드 바에 스왑 할 때까지 필요한대로 표시됩니다. 빈 캔버스에서 컨트롤 및 속성 버튼 (적어도 후자는 작동하지 않음) 만 표시됩니다.
"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,
}),
});
}
아마 필요가 맵 새로 고침 (내가 새로 고침과 같은 유래에서 제공되는 몇 가지 방법을 시도, 렌더링, updateSize 등을 다시 그리기) 동안, 나는 또한 같은 (지도를 다시 초기화 시도 나는 원래) - 아무 소용이 없습니다.
<div class="sidebar" onclick="Util.swapNodes(event); Map.initMap();">
여기 무슨 일이 벌어지고 있는지 궁금하십니까?