Résoudre paresseusement la div des mosaïques d overview (icône non posée à l eval)
This commit is contained in:
@ -2405,6 +2405,18 @@ const ovItemFor = (k, e) => {
|
||||
|
||||
let ovSig = null; // géométrie enregistrée (anti-recréation au merge live)
|
||||
|
||||
// Div de mosaïque, résolue paresseusement : à la création (eval du script)
|
||||
// la vue Leaflet n'est pas encore posée et getElement() renvoie null — le
|
||||
// marqueur n'a son icône qu'après le premier setView (même mécanique que
|
||||
// entryDiv pour les tuiles).
|
||||
function ovDiv(e) {
|
||||
if (!e.div) {
|
||||
const el = e.mk.getElement();
|
||||
e.div = el ? el.querySelector('.ltile') : null;
|
||||
}
|
||||
return e.div;
|
||||
}
|
||||
|
||||
function registerOverview() {
|
||||
const items = ovItems();
|
||||
if (!items.length || !map) return;
|
||||
@ -2469,7 +2481,8 @@ function quadMatrix3d(src, dst) {
|
||||
function layoutOverview() {
|
||||
const zoom = map.getZoom();
|
||||
for (const e of ovEntries) {
|
||||
if (!e.div) continue;
|
||||
const div = ovDiv(e);
|
||||
if (!div) continue;
|
||||
const meta = e.meta;
|
||||
const anchor = map.project(e.latlngs[3], zoom);
|
||||
// Coins image : NW(0,0) NE(w,0) SE(w,h) SW(0,h) — soit corners[3,2,1,0].
|
||||
@ -2478,7 +2491,6 @@ function layoutOverview() {
|
||||
return [p.x - anchor.x, p.y - anchor.y];
|
||||
});
|
||||
const m = quadMatrix3d([[0, 0], [meta.w, 0], [meta.w, meta.h], [0, meta.h]], dst);
|
||||
const div = e.div;
|
||||
div.style.width = meta.w + 'px';
|
||||
div.style.height = meta.h + 'px';
|
||||
div.style.transformOrigin = '0 0';
|
||||
@ -2621,7 +2633,8 @@ function syncTileLayers() {
|
||||
}
|
||||
// Overview : mêmes couches actives, une <img> par couche et par mosaïque.
|
||||
for (const e of ovEntries) {
|
||||
if (!e.div) continue;
|
||||
const div = ovDiv(e);
|
||||
if (!div) continue;
|
||||
for (const k of Object.keys(e.imgs)) {
|
||||
if (act.includes(k) && ovItemFor(k, e)) continue;
|
||||
e.imgs[k].src = '';
|
||||
@ -2636,7 +2649,7 @@ function syncTileLayers() {
|
||||
img.dataset.layer = k;
|
||||
img.alt = '';
|
||||
img.decoding = 'async';
|
||||
e.div.appendChild(img);
|
||||
div.appendChild(img);
|
||||
e.imgs[k] = img;
|
||||
}
|
||||
img.classList.remove('fading');
|
||||
|
||||
Reference in New Issue
Block a user