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);
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.