我完全不知道应该是一件非常简单的事情:显示一个高700像素,宽1162像素的自定义(非地理)地图。我已使用gdal2tiles.py -p raster -z 0-5
成功平铺了此地图,以生成256x256像素文件的正确命名子目录。 tilemapresource.xml
文件确认了这些维度。 (Y坐标范围从-700
到0
,X从0
到1162.
我算了:
`this.maxBounds = new L.LatLngBounds(L.CRS.Simple.pointToLatLng(southWestPoint,
this.maxZoom),
L.CRS.Simple.pointToLatLng(northEastPoint,
this.maxZoom));`
其中southWestPoint
为(0, -700)
,northEastPoint
为(1162, 0)
。在LatLng中,这对应于(0,0)
和(21.8, 36.3)
,所有这些似乎都很正常。 (事实上,我可以将它们反馈到反函数latLngToPoint
并得到原点......)
我现在使用以下选项构建TileLayer
:
`{minZoom: 0, maxZoom: 5, tileSize: 256, detectRetina: true,
continuousWorld: true, tms : true, noWrap: true, bounds: *(as above)*`
......然后以类似的方式构建Map
:
`var mapOptions = { crs : L.CRS.Simple,
center : this.tileLayer.centerLatLng,
maxBounds : *(the TileLayer's "bounds")*
zoom : 2,
minZoom : 0,
maxZoom : 5,
layers : [*the tile-layer*]};`
`
......我得到的是......疯了。屏幕中央的一个小盒子,可以放大和缩小,从不显示整个地图(毫无疑问是因为tileLayer"界限"),除非你完全放大。显示屏永远不会填满整个窗口区域。
我发现,如果您手动调整bounds
和maxBounds
的数字,您实际上可以哄骗整个地图按原样显示。但当然,我需要计算这个。
我必须在这里做一些根本错误的事情。但是我看不出它是什么,所以我迫切地(在这一点上)寻求帮助。