我制作了简单的传单示例。它渲染程序图块,每个图块都显示位置和缩放。投影和 CRS 被配置为将 lat 和 lng 直接映射到 x 和 y,而不需要在 zoom=20 时进行任何转换。您可以通过单击地图并查看带有坐标的弹出窗口来轻松检查这一点。
var naturalZoom = 20;
L.Projection.Direct = {
project: function (latlng) {
return new L.Point(latlng.lat, -latlng.lng);
},
unproject: function (point) {
return new L.LatLng(point.x, -point.y);
}
};
L.CRS.Wall = L.extend({}, L.CRS, {
projection: L.Projection.Direct,
transformation: new L.Transformation(1, 0, -1, 0),
scale: function (zoom) {
return Math.pow(2, zoom-naturalZoom);
}
});
var map = L.map('map', {
crs: L.CRS.Wall,
maxBounds: new L.LatLngBounds([0,0], [4096, 4096])
});
map.setView([0,0], naturalZoom);
我试图限制地图的边界(取消注释 jsfiddle 示例中代码的第 26 行),但这会破坏整个图层的拖动。有没有人对自定义 crs 和 maxBounds 有类似的问题?这可能是传单库中的错误吗?
感谢您的任何帮助。