볼 짧은 대답은 당신이 아니라 당신은 타일을 미리 렌더링 한있는 줌 레벨을 표시 할 수 있다는 것입니다 수 있습니다 내 문제의 데모를했다. 전단지는 중개 확대 레벨을 생성하지 않습니다.
긴 대답은 할 이것을 사용하기 위해, 당신은 예를 들어, 자신의 CRS 스케일 방법을 정의하고지도에 전달할 필요가있다 :
L.CRS.CustomZoom = L.extend({}, L.CRS.Simple, {
scale: function (zoom) {
// This method should return the tile grid size
// (which is always square) for a specific zoom
// We want 0 = 200px = 2 tiles @ 100x100px,
// 1 = 300px = 3 tiles @ 100x100px, etc.
// Ie.: (200 + zoom*100)/100 => 2 + zoom
return 2 + zoom;
}
});
var map = L.map('map', { crs: L.CRS.CustomZoom }).setView([0, 0], 0);
을이 예제에서는 확장했습니다 L.CRS.Simple
하지만 원하는 API에서 CRS를 확장하거나 처음부터 직접 만들 수도 있습니다.
확대/축소 비율을 사용하면지도 픽셀 크기가 타일 크기의 배수가 아니므로 오른쪽/아래쪽 가장자리 타일의 일부만지도 데이터로 채워집니다. 이러한 타일의 비 맵 부분을 100 % 투명하게 만들거나 배경과 같은 색상으로 만들면 해결할 수 있습니다.
그러나 내 의견으로는 타일 수가 가장 작은 공통 분모 (이 경우 100 픽셀)와 일치하도록 설정하는 것이 더 좋습니다. 타일 레이어에 tileSize
옵션을 사용하여이를 반영해야합니다. 물론 현재 사용중인 256x256 타일 대신 100x100 픽셀 타일로 이미지를 다시 렌더링해야합니다.
LeafletJS (0.5)의 현재 버전은 TileLayer 클래스가 2의 2 확대/축소 배율을 사용하도록 하드 코드되어 있기 때문에 사용자 정의 scale() 메서드가 작동하지 못하게하는 버그가 있습니다. 그러나, 당신이해야 할 변경 사항은 사소한 것이며 잘하면이 책자의 향후 릴리스에서 해결 될 것입니다.
_getWrapTileNum: function() {
// TODO refactor, limit is not valid for non-standard projections
return Math.pow(2, this._getZoomForUrl());
},
하려면 : 간단히에서 TileLayer._getWrapTileNum()
을 변경
_getWrapTileNum: function() {
return this._map.options.crs.scale(this._getZoomForUrl());
},
당신이 모든 줌 레벨에 대한 사전 렌더링 된 타일을 가지고, 어떻게 든 더 높은 줌 레벨 타일을 사용하고이를 확장하고 사람들을 사용 전단지 수없는 경우? 그들은 약간 pixelated 될 비록? –