Leaflet: ¿Opción tms ignorada en 1.0?

Creado en 28 sept. 2016  ·  3Comentarios  ·  Fuente: Leaflet/Leaflet

Estoy usando mosaicos personalizados generados por gdal. En 1.0, los mosaicos se invierten en el eje y después de acercar. Intenté alternar tms de verdadero a falso, pero no tuvo ningún efecto. También probé la nueva función {-y} (con la opción tms eliminada), pero arroja un error "No se proporcionó valor para la variable {-y}".

Después de jugar un rato, hice referencia a 0.6.4 en lugar de 1.0 y todo funciona.

Por cierto, el enlace cdn a 0.7.7 parece inactivo: http://cdn.leafletjs.com/leaflet-0.7.7/leaflet.js

Vinculación contra https://unpkg.com/[email protected]/dist/leaflet.js para 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);

Todos 3 comentarios

Funciona para mí, consulte http://playground-leaflet.rhcloud.com/bahu/edit?html , salida

La próxima vez, consulte el tutorial de WMS / TMS , que contiene ejemplos prácticos de TMS, y formule un informe de error como un informe de error real.

Correcto, ya había leído eso (y todos los tutoriales), pero eso realmente no se aplica a los mosaicos personalizados junto con TMS. El tutorial más cercano es http://leafletjs.com/examples/crs-simple/crs-simple.html. Siendo un tema algo esotérico, esperaba una guía. Preguntaré en Stackoverflow la próxima vez, mi culpa.

Para cualquier otra persona que intente obtener CRS.Simplemente trabajando con el mosaico generado por GDAL, el problema parece deberse a este bloque de código

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 nunca se invertirá porque infinite se establece en verdadero en CRS.Simple. Crear una copia personalizada de CRS.Simple con infinite = false hizo el truco para mi situación.

¿Fue útil esta página
0 / 5 - 0 calificaciones