Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自定义元素与传单和标记不对齐_Javascript_Leaflet_Custom Element - Fatal编程技术网

Javascript 自定义元素与传单和标记不对齐

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

我正在尝试并学习创建我的第一个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: 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:
          '&copy; <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
。我要痛击一下。