我做了簡單的傳單example。它呈現每個位置和縮放都顯示的程序性貼圖。 投影和CRS配置爲將lat和lng直接映射到x和y,而在zoom = 20時不進行任何轉換。您可以通過點擊地圖並查看帶有座標的彈出框來輕鬆檢查。傳單maxBounds自定義投影
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類似的問題?這可能是傳單庫中的一個錯誤嗎?
謝謝你的幫助。
傳單動畫拖動,當你放開鼠標時,它仍然會進一步移動。你設置的界限非常緊密。因此,拖動時你會撞到牆上。我沒有看到任何其他不尋常的事情。你能解釋一下你說拖延休息的原因嗎? – flup
界限並不嚴密,它們設置爲矩形(0,0,4096,4096)。 請看看http://jsfiddle.net/cMjZa/4/ 示例只需嘗試拖動和縮放,看看我在說什麼。啊哈! –
啊!是的,現在我明白了!不過,我認爲一個屏幕像素是一個地圖像素嗎?然後它有點緊。 – flup