Maps 完全被一个带有自定义地图的传单.js问题所迷惑
我完全被一件小事弄糊涂了:显示一张700像素高、1162像素宽的自定义(非地理)地图。我使用Maps 完全被一个带有自定义地图的传单.js问题所迷惑,maps,leaflet,Maps,Leaflet,我完全被一件小事弄糊涂了:显示一张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(southWestPoin
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));`
其中西南点
为(0,-700)
,东北点
为(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)*`
。。。然后以类似的方式,我构建了地图
:
`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“边界”)。该显示永远不会填充窗口的整个区域
我发现,如果您手动拨弄边界
和最大边界
的数字,实际上您可以引导整个地图按原样显示。但当然,我需要能够计算这个
我肯定是做错了什么事。但是我看不到它是什么,所以我拼命(此时)寻求帮助。有没有可能把它放到演示网站上?我可以给你发送文件和脚本。我看到的显示由地图下三分之一的平铺组成,在一个大致位于div中心的框中。缩小时,显示会发生变化,但显然它永远不会完成。(但如果在TileLayer上关闭“bounds”(边界),它是完整的,但仍然在错误的位置。)显然,问题的根本原因必须是:与坐标有关。例如:如果我强制一个介于
(0,0)
到(75,58)
范围内的“bounds”(和“maxBounds”),那么我将看到预期的地图,大致正确定位。但是,“我编造了这些数字。”我发现如果我“摆弄数字”,我可以逐渐强制(!)显示器正确定位并具有适当大小。没有其他因素。。。中心等。。。没有任何效果。只有“无法解释,无法计算的”数字才能做到这一点,当然“根本不是解决方案”。“传单0.7.3。我已将问题脚本的一份实时副本发布在:问题脚本本身位于这些文件中。只有在问题解决之前,这些文件才会保留在此位置。如果完全缩小,您将看到整个地图显示应该是什么样子的。但您最初看到的只是左下角,显示在页面中间,由于“maxBounds”而无法移动。由于“tileLayer.bounds”而无法看到所有内容。您应该看到的是完整的地图,最初处于缩放级别2,当然位于窗口中的适当位置,并显示地图的所有分幅(但没有其他分幅)。我已经将问题简化为“问题是maxBounds”。如果我在这里手动插入LatLngBounds,我可以使显示具有正确的大小和位置。但这当然不是重点。