Пользовательский элемент на основе JS, показанный ниже, работает, но не может найти mapid
div, который я добавляю в теневой корень DOM. Есть ли способ в Leaflet или пользовательских элементах, позволяющий стандартному Leaflet (версия 1.4, последняя на момент написания этой статьи) находить и использовать теневую DOM-основу mapid
div?
ошибка:
Uncaught Error: Map container not found.
at NewClass._initContainer (Map.js:1102)
at NewClass.initialize (Map.js:136)
at new NewClass (Class.js:22)
at Module.createMap (Map.js:1717)
at new GDMap (gd-map.js:16)
at gd-map.js:30
at gd-map.js:31
Я продолжаю подход, согласно которому это просто тот случай, когда Leaflet ищет div mapid в корне dom и не может найти его в тени dom.
1010 * Javascript *
import * as L from './leaflet/leaflet-src.esm.js';
(function () {
class GDMap extends HTMLElement {
constructor() {
super();
this.attachShadow({ mode: 'open' });
this.shadowRoot.innerHTML = `<div style="height:180px" id="mapid"></div>`;
var map = L.map('mapid').setView([51.505, -0.09], 13);
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([51.5, -0.09]).addTo(map)
.bindPopup('A pretty CSS3 popup.<br> Easily customizable.')
.openPopup();
}
}
window.customElements.define('geodex-map', GDMap);
})();
отредактировал сообщение, чтобы выровнять div id, как указано, но проблема все еще та же.