使用瓦片覆盖时,到目前为止我看到的唯一方法是在抓取瓦片时听 Google,从调用中获取 X、Y、Z 坐标,并将其与瓦片集进行比较。
var tileOptions = {
getTileUrl: function(coord, zoom) {
return "/tiles/" + zoom + "_" + coord.x + "_" + coord.y + ".png";
}
}
如果 X,Y,Z 处的图块存在,则正常找到并调用它。如果没有,则出现 404 错误。就我而言,我有六组可能同时处于活动状态的图块,创建图块的脚本会忽略并且不会创建空白图块,这意味着每次地图更改缩放或位置时,都会出现当所有图块都尝试加载时,可能会出现一百个以上的 404 错误。
为了尝试在某些方面帮助解决这个问题,我将图块搜索限制在图块覆盖的区域:
var tileOptions = {
if (zoom>=16 && zoom<=20) {
if (zoom=16) { if (coord.x>=16000 && coord.x<=16004) { if (coord.y>=24200 && coord.y<=24203) {
getTileUrl: function(coord, zoom) {
//return the tiles
}}}
}
if (zoom=17) //...
}
if (zoom=18) //...
}
//...
}
}
但是,该区域跨越 8x10 块的区域,并没有完全被叠加层覆盖。这种方法除了仅在用户试图远离地图时防止错误外,还过于复杂,可能会减慢图块调用过程。
因此,我正在寻找一种“放置”瓷砖而不是“调用”它们的方法:而不是地图询问“你有这个瓷砖”并冒着 404 错误的风险,脚本或函数会说“我有这些瓷砖,放置它们”忽略丢失的瓷砖(空白),理想情况下只加载页面上可见的瓷砖。
或者,我也在寻找一种让函数知道存在哪些图块的方法,因此它只尝试调用这些标题,从而避免 404 错误。
简而言之,如何避免调用磁贴时出现 404 错误?
写完问题后的想法:我假设第一个理想的解决方案是获取 if 语句的堆栈并将它们转换为对图块的更动态检查,如果存在图块,则使用“返回”来实际调用它;但是,这似乎仍然导致相同的 404 错误,但来自不同的功能。
使用索引:正如下面由 meetamit 提出的(如果我理解正确的话),首先创建一个索引来检查图块的存在/不存在,而不是调用图块并使用 404 作为检查。但是,使用一组“Z_X_Y.png”格式的图块,我如何轻松创建这些索引?