Leaflet: tms-Option in 1.0 ignoriert?

Erstellt am 28. Sept. 2016  ·  3Kommentare  ·  Quelle: Leaflet/Leaflet

Ich verwende benutzerdefinierte Kacheln, die von gdal generiert werden. In 1.0 werden die Kacheln nach dem Zoomen in der y-Achse umgekehrt. Ich habe versucht, tms von true auf false umzuschalten, aber es hatte keine Wirkung. Ich habe auch die neue {-y} Funktion ausprobiert (mit entfernter tms-Option), aber sie wirft den Fehler "Kein Wert für Variable {-y} bereitgestellt" aus.

Nachdem ich eine Weile herumgefummelt habe, habe ich auf 0.6.4 statt 1.0 verwiesen und alles funktioniert.

Übrigens, der cdn-Link zu 0.7.7 scheint nicht zu funktionieren: http://cdn.leafletjs.com/leaflet-0.7.7/leaflet.js

Verlinkung gegen https://unpkg.com/[email protected]/dist/leaflet.js für 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);

Alle 3 Kommentare

Funktioniert bei mir, siehe http://playground-leaflet.rhcloud.com/bahu/edit?html ,Ausgabe

Sehen Sie sich das nächste Mal das WMS/TMS-Tutorial an , das funktionierende Beispiele für TMS enthält, und formulieren Sie einen Fehlerbericht wie einen tatsächlichen Fehlerbericht.

Richtig, das (und alle Tutorials) hatte ich schon gelesen, aber das trifft nicht wirklich auf benutzerdefinierte Kacheln in Verbindung mit TMS zu. Das nächste Tutorial ist http://leafletjs.com/examples/crs-simple/crs-simple.html. Da es sich um ein esoterisches Thema handelte, hoffte ich auf Anleitung. Ich werde beim nächsten Mal auf Stackoverflow nachfragen, mein Fehler.

Für alle anderen, die versuchen, CRS.Simple mit von GDAL generierten Kacheln zu verwenden, scheint das Problem durch diesen Codeblock verursacht zu werden

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;
        }

y wird nie invertiert, weil infinite in CRS.Simple auf true gesetzt ist. Das Erstellen einer benutzerdefinierten Kopie von CRS.Simple mit infinite = false hat für meine Situation den Trick gemacht.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen