Leaflet: option tms ignorée dans 1.0 ?

Créé le 28 sept. 2016  ·  3Commentaires  ·  Source: Leaflet/Leaflet

J'utilise des tuiles personnalisées générées par gdal. Dans la version 1.0, les tuiles sont inversées sur l'axe des y après un zoom avant. J'ai essayé de basculer tms de vrai à faux, mais cela n'a eu aucun effet. J'ai également essayé la nouvelle fonctionnalité {-y} (avec l'option tms supprimée), mais elle renvoie une erreur "Aucune valeur fournie pour la variable {-y}".

Après avoir bidouillé pendant un certain temps, j'ai référencé 0.6.4 au lieu de 1.0 et tout fonctionne.

Au fait, le lien cdn vers 0.7.7 semble en panne : http://cdn.leafletjs.com/leaflet-0.7.7/leaflet.js

Lien vers https://unpkg.com/[email protected]/dist/leaflet.js pour 1.0

var map = L.map('map', {
            crs: L.CRS.Simple,
            center: L.latLng(-128, 128),
            zoom: -2
        });
        L.tileLayer('/map/{z}/{x}/{y}.png', {
            noWrap: true,
            attribution: 'WW',
            detectRetina: false,
            bounds: L.latLngBounds(
                L.latLng(-256, 0),
                L.latLng(0, 256)
            ),
            tms: true,
            minZoom: 0,
            maxZoom: 4
        }).addTo(map);

Tous les 3 commentaires

Fonctionne pour moi, voir http://playground-leaflet.rhcloud.com/bahu/edit?html , sortie

La prochaine fois, consultez le didacticiel WMS/TMS , qui contient des exemples fonctionnels de TMS, et formulez un rapport de bogue comme un véritable rapport de bogue.

D'accord, j'avais déjà lu cela (et tous les tutoriels), mais cela ne s'applique pas vraiment aux tuiles personnalisées en conjonction avec TMS. Le tutoriel le plus proche est http://leafletjs.com/examples/crs-simple/crs-simple.html. Étant quelque peu un sujet ésotérique, j'espérais des conseils. Je demanderai sur Stackoverflow la prochaine fois, ma mauvaise.

Pour toute autre personne essayant de faire fonctionner CRS.Simple avec la mosaïque générée par GDAL, le problème semble être causé par ce bloc de code

if (this._map && !this._map.options.crs.infinite) {
            var invertedY = this._globalTileRange.max.y - coords.y;
            if (this.options.tms) {
                data['y'] = invertedY;
            }
            data['-y'] = invertedY;
        }

Le y ne s'inversera jamais car infinite est défini sur true dans CRS.Simple. La création d'une copie personnalisée de CRS.Simple avec infinie = false a fait l'affaire pour ma situation.

Cette page vous a été utile?
0 / 5 - 0 notes