如何设置瓦片服务器上可用的最大缩放?
How can I set max zoom available on a tile server?
问题:
假设我的图块服务器只有缩放比例为 8、9 和 10 的图块图像。
当客户端以缩放 11 启动时,我希望 Openlayers 获取缩放 10(服务器上的最大可用缩放)并在客户端拉伸图块。所以,我希望用户即使在缩放 11 时也能看到一些东西,尽管质量较低。
这可能吗?
更多解释:
(后面有更多解释,以防问题没有意义)
默认情况下,如果 Javascript 客户端以缩放 11 重新启动,则不会显示任何内容(错误),但如果客户端以缩放 10 启动,则 然后 放大到 11 已经获取的缩放 10 的图块被拉伸和显示(更好),同时仍在尝试获取缩放 11 的图块并从服务器获取 404。
我最好的尝试是设置 tileLoadFunction 选项,因为它被赋予了 [z, x, y] 值并且显然可以设置平铺图像的 src。我说 "apparently" 是因为我还没有尝试过。问题是减少 z 的值是不够的,我还必须为新的 z 计算 [x, y],这很复杂,我认为我应该避免手动计算。
图层代码如下:
let heatmapLayer = new TileLayer({
visible: true,
opacity: 0.75,
source: new XYZ({
tileSize: [512, 512],
url: "http://myserver/heatmap-z{z}-x{x}-y{y}.png",
}),
});
您可以指定提供磁贴的最小和最大缩放级别
source: new XYZ({
tileSize: [512, 512],
url: "http://myserver/heatmap-z{z}-x{x}-y{y}.png",
minZoom: 8,
maxZoom: 10,
}),
对于其他分辨率,视图将按比例放大或缩小图块
问题:
假设我的图块服务器只有缩放比例为 8、9 和 10 的图块图像。
当客户端以缩放 11 启动时,我希望 Openlayers 获取缩放 10(服务器上的最大可用缩放)并在客户端拉伸图块。所以,我希望用户即使在缩放 11 时也能看到一些东西,尽管质量较低。
这可能吗?
更多解释:
(后面有更多解释,以防问题没有意义)
默认情况下,如果 Javascript 客户端以缩放 11 重新启动,则不会显示任何内容(错误),但如果客户端以缩放 10 启动,则 然后 放大到 11 已经获取的缩放 10 的图块被拉伸和显示(更好),同时仍在尝试获取缩放 11 的图块并从服务器获取 404。
我最好的尝试是设置 tileLoadFunction 选项,因为它被赋予了 [z, x, y] 值并且显然可以设置平铺图像的 src。我说 "apparently" 是因为我还没有尝试过。问题是减少 z 的值是不够的,我还必须为新的 z 计算 [x, y],这很复杂,我认为我应该避免手动计算。
图层代码如下:
let heatmapLayer = new TileLayer({
visible: true,
opacity: 0.75,
source: new XYZ({
tileSize: [512, 512],
url: "http://myserver/heatmap-z{z}-x{x}-y{y}.png",
}),
});
您可以指定提供磁贴的最小和最大缩放级别
source: new XYZ({
tileSize: [512, 512],
url: "http://myserver/heatmap-z{z}-x{x}-y{y}.png",
minZoom: 8,
maxZoom: 10,
}),
对于其他分辨率,视图将按比例放大或缩小图块