Leaflet: опция tms игнорируется в 1.0?

Созданный на 28 сент. 2016  ·  3Комментарии  ·  Источник: Leaflet/Leaflet

Я использую пользовательские плитки, созданные gdal. В версии 1.0 плитки меняются местами по оси Y после увеличения. Я попытался переключить tms с true на false, но это не дало результата. Я также попробовал новую функцию {-y} (с удаленной опцией tms), но она выдает ошибку «Не указано значение для переменной {-y}».

После того, как я немного поигрался, я сослался на 0.6.4 вместо 1.0, и все работает.

Кстати, ссылка cdn на 0.7.7 кажется неработающей: http://cdn.leafletjs.com/leaflet-0.7.7/leaflet.js

Связывание с https://unpkg.com/[email protected]/dist/leaflet.js для 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);

Все 3 Комментарий

У меня работает, см. Http://playground-leaflet.rhcloud.com/bahu/edit?html , вывод

В следующий раз ознакомьтесь с руководством по WMS / TMS , которое содержит рабочие примеры TMS, и сформулируйте отчет об ошибке, как настоящий отчет об ошибке.

Правильно, я уже прочитал это (и все руководства), но на самом деле это не относится к настраиваемым плиткам в сочетании с TMS. Ближайший учебник - http://leafletjs.com/examples/crs-simple/crs-simple.html. Поскольку я относился к какой-то эзотерической теме, я надеялся на руководство. Спрошу на Stackoverflow в следующий раз, плохо.

Для всех, кто пытается получить CRS. Простая работа с тайлингом, созданным GDAL, проблема, похоже, вызвана этим блоком кода

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 никогда не будет инвертирован, потому что infinite имеет значение true в CRS.Simple. Создание настраиваемой копии CRS.Simple с infinite = false помогло в моей ситуации.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги