Hello
Depuis que j'ai mis GIS à jour et quelques autres plugins hier,
des versions "retina" @2x des tuiles sont demandées
lorsque le zoom de l'affichage du browser est > 1
(et qu'on raffraîchit la page après avoir zoomé).
Or j'utilise stamen watercolor, qui ne fournit pas de tuiles @2x
du coup, rien ne s'affiche quand on zoome l'affichage du navigateur.
Les markers s'affichent bien quand même,
de même que le layer toner-label dont une version retina existe bien.
J'ai restauré une vieille version de GiS (la V4.44.6) et ça remarche bien.
J'ai examiné le code et trouvé ces pistes :
L.browser.retina est calculé et vaut true sur les écrans rétina OU sur tout écran quand le displayzoom > 1
(testé : c'est vrai, ça vaut true quand on zoome)
mais detectRetina est false (par défaut),
et devrait a priori empêcher tout recours aux @2x , quelque soit la valeur de L.browser.retina
cependant, getTileUrl ne teste pas detectRetina
et définit toujours un r avec @2x si L.browser.retina est vrai
même si detectRetina est false
(c'est un peu étonnant d'ailleurs, ça semble risqué)
Dans leaflet-providers.js il n'y a pas d'option spécifique pour watercolor
qui est donc traité comme toner-label alors que toner-label propose une version retina
mais pas watercolor
Dans la V4.44.6 il y a :
url: '//stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}',
et dans la V4.44.18 il y a :
url: 'https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}',
C'est à dire que ça utilise désormais le 'r' calculé
Donc il me semble qu'il faudrait, si c'est possible, mettre une exception dans les options du provider watercolor
en le décrivant mieux c'est à dire en précisant qu'il fait exception aux stamens
et que lui ne dispose pas de l'option retina
Et si c'est pas possible de faire ça, il faudrait le mettre à part comme un autre provider, pour ne pas indiquer le {r}
J'ai créé un ticket chez leaflet :
https://github.com/Leaflet/Leaflet/issues/6193
Ou sinon peut être il suffirait de ne pas calculer le r dans getTileUrl puisqu'il ne sert à rien quand detectRetina est false.
Est-ce normal, d'ailleurs, que la version retina soit utilisée même si detectRetina est false ?
JLuc