Leaflet: opção tms ignorada em 1.0?

Criado em 28 set. 2016  ·  3Comentários  ·  Fonte: Leaflet/Leaflet

Estou usando blocos personalizados gerados por gdal. No 1.0, os blocos estão sendo invertidos no eixo y após o zoom. Tentei alternar tms de verdadeiro para falso, mas não teve efeito. Eu também tentei o novo recurso {-y} (com a opção tms removida), mas ele gerou um erro "Nenhum valor fornecido para a variável {-y}".

Depois de mexer por um tempo, referenciei 0.6.4 em vez de 1.0 e tudo funciona.

A propósito, o link do cdn para 0.7.7 parece inativo: http://cdn.leafletjs.com/leaflet-0.7.7/leaflet.js

Vinculando a 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 comentários

Funciona para mim, consulte http://playground-leaflet.rhcloud.com/bahu/edit?html , saída

Da próxima vez, verifique o tutorial WMS / TMS , que contém exemplos de trabalho do TMS, e formule um relatório de bug como um relatório de bug real.

Certo, eu já tinha lido isso (e todos os tutoriais), mas isso realmente não se aplica a blocos personalizados em conjunto com o TMS. O tutorial mais próximo é http://leafletjs.com/examples/crs-simple/crs-simple.html. Por ser um tópico um tanto esotérico, esperava receber orientação. Vou perguntar no Stackoverflow da próxima vez, que pena.

Para qualquer outra pessoa que esteja tentando fazer o CRS.Simple funcionar com o tiling gerado pelo GDAL, o problema parece ser causado por este bloco 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;
        }

O y nunca será invertido porque infinite está definido como verdadeiro no CRS.Simple. Criar uma cópia personalizada de CRS.Simple com infinite = false resolveu minha situação.

Esta página foi útil?
0 / 5 - 0 avaliações