Javascript 自定义元素与传单和标记不对齐
我正在尝试并学习创建我的第一个Web组件/自定义元素来显示传单地图。 虽然我可以展示地图,但我一辈子都不能把它放在分区的中心 div的控制台视图是Javascript 自定义元素与传单和标记不对齐,javascript,leaflet,custom-element,Javascript,Leaflet,Custom Element,我正在尝试并学习创建我的第一个Web组件/自定义元素来显示传单地图。 虽然我可以展示地图,但我一辈子都不能把它放在分区的中心 div的控制台视图是 <div id="mapdiv" class="leaflet-container leaflet-retina leaflet-fade-anim leaflet-grab leaflet-touch-drag" tabindex="0" style="height: 400px; width: 600px; position: relati
<div id="mapdiv" class="leaflet-container leaflet-retina leaflet-fade-anim leaflet-grab leaflet-touch-drag" tabindex="0" style="height: 400px; width: 600px; position: relative; outline: none;">
我的Javascript代码如下
let shadow = this.attachShadow({ mode: "open" });
var mapdiv = document.createElement("div");
mapdiv.setAttribute("id", "mapdiv");
mapdiv.style.height = "400px";
mapdiv.style.width = "600px";
mapdiv.innerHTML =
'<link rel="stylesheet" href="https://unpkg.com/leaflet@1.4.0/dist/leaflet.css" integrity="sha512-puBpdR0798OZvTTbP4A8Ix/l+A4dHDD0DGqYW6RQ+9jxkRFclaxxQb/SJAWZfWAkuyeQUytO7+7N4QKrDh+drA=="crossorigin=""/>';
shadow.appendChild(mapdiv);
var map = L.map(mapdiv).setView([-33.75969, 151.09488], 8);
L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", {
attribution:
'© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
L.marker([-33.75969, 151.09488])
.addTo(map)
.bindPopup("This is not working")
.openPopup();
}
}
);
let shadow=this.attachShadow({mode:“open”});
var mapdiv=document.createElement(“div”);
setAttribute(“id”、“mapdiv”);
mapdiv.style.height=“400px”;
mapdiv.style.width=“600px”;
mapdiv.innerHTML=
'';
shadow.appendChild(mapdiv);
var map=L.map(mapdiv).setView([-33.75969151.09488],8);
L.tileLayer(“https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png”{
归属:
“©;贡献者”
}).addTo(地图);
L.标记([-33.75969151.09488])
.addTo(地图)
.bindpoop(“这不起作用”)
.openPopup();
}
}
);
})()
干杯如果您的元素还不在实际的页面DOM中,传单可能仍然无法确定其大小。一旦显示,请尝试使其大小无效。对不起,我不明白“尝试使其大小无效”是什么意思。感谢HeapsHe,这意味着您应该在将标记添加到映射后尝试此操作:
setTimeout(function(){map.invalidateSize()},400)
或文档中的onReadyEvent。如果上述操作不起作用,请尝试在页面加载时添加CSS或/并将其附加到标题,而不是mapdiv
。如果您的元素还不在实际的页面DOM中,那么传单可能仍然无法确定其大小。一旦显示,请尝试使其大小无效。对不起,我不明白“尝试使其大小无效”是什么意思。感谢HeapsHe,这意味着您应该在将标记添加到映射后尝试此操作:setTimeout(function(){map.invalidateSize()},400)
或文档中的onReadyEvent。如果上述操作不起作用,请尝试在页面加载时添加CSS或/并将其附加到标题,而不是mapdiv
。我要痛击一下。