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)
|
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() {
|
function registerOverview() {
|
||||||
const items = ovItems();
|
const items = ovItems();
|
||||||
if (!items.length || !map) return;
|
if (!items.length || !map) return;
|
||||||
@ -2469,7 +2481,8 @@ function quadMatrix3d(src, dst) {
|
|||||||
function layoutOverview() {
|
function layoutOverview() {
|
||||||
const zoom = map.getZoom();
|
const zoom = map.getZoom();
|
||||||
for (const e of ovEntries) {
|
for (const e of ovEntries) {
|
||||||
if (!e.div) continue;
|
const div = ovDiv(e);
|
||||||
|
if (!div) continue;
|
||||||
const meta = e.meta;
|
const meta = e.meta;
|
||||||
const anchor = map.project(e.latlngs[3], zoom);
|
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].
|
// 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];
|
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 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.width = meta.w + 'px';
|
||||||
div.style.height = meta.h + 'px';
|
div.style.height = meta.h + 'px';
|
||||||
div.style.transformOrigin = '0 0';
|
div.style.transformOrigin = '0 0';
|
||||||
@ -2621,7 +2633,8 @@ function syncTileLayers() {
|
|||||||
}
|
}
|
||||||
// Overview : mêmes couches actives, une <img> par couche et par mosaïque.
|
// Overview : mêmes couches actives, une <img> par couche et par mosaïque.
|
||||||
for (const e of ovEntries) {
|
for (const e of ovEntries) {
|
||||||
if (!e.div) continue;
|
const div = ovDiv(e);
|
||||||
|
if (!div) continue;
|
||||||
for (const k of Object.keys(e.imgs)) {
|
for (const k of Object.keys(e.imgs)) {
|
||||||
if (act.includes(k) && ovItemFor(k, e)) continue;
|
if (act.includes(k) && ovItemFor(k, e)) continue;
|
||||||
e.imgs[k].src = '';
|
e.imgs[k].src = '';
|
||||||
@ -2636,7 +2649,7 @@ function syncTileLayers() {
|
|||||||
img.dataset.layer = k;
|
img.dataset.layer = k;
|
||||||
img.alt = '';
|
img.alt = '';
|
||||||
img.decoding = 'async';
|
img.decoding = 'async';
|
||||||
e.div.appendChild(img);
|
div.appendChild(img);
|
||||||
e.imgs[k] = img;
|
e.imgs[k] = img;
|
||||||
}
|
}
|
||||||
img.classList.remove('fading');
|
img.classList.remove('fading');
|
||||||
|
|||||||
Reference in New Issue
Block a user