我正在使用由 gdal 生成的自定义磁贴。 在 1.0 中,图块在放大后会在 y 轴上反转。 我尝试将tms
从真切换{-y}
功能(删除了 tms 选项),但它引发了“没有为变量 {-y} 提供值”错误。
在摆弄了一段时间后,我引用了 0.6.4 而不是 1.0,一切正常。
顺便说一句,指向 0.7.7 的 CDN 链接似乎已关闭: http ://cdn.leafletjs.com/leaflet-0.7.7/leaflet.js
链接https://unpkg.com/[email protected]/dist/leaflet.js for 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);
对我有用,请参阅
下次,查看WMS/TMS 教程,其中包含 TMS 的工作示例,并像实际的错误报告一样制定错误报告。
是的,我已经阅读了那个(以及所有教程),但这并不真正适用于与 TMS 结合使用的自定义磁贴。 最接近的教程是http://leafletjs.com/examples/crs-simple/crs-simple.html。 作为一个有点深奥的话题,我希望得到指导。 下次我会在 Stackoverflow 上问,我的错。
对于任何其他试图让 CRS.Simple 使用 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
在 CRS.Simple 中设置为 true。 使用infinite = false 创建CRS.Simple 的自定义副本可以解决我的情况。