2

问题:

假设我的切片服务器只有缩放 8、9 和 10 的切片图像。

当客户端以缩放 11 开始时,我希望 Openlayers 获取缩放 10(服务器上的最大可用缩放)并在客户端中拉伸图块。所以,我希望用户看到一些东西,尽管质量较低,即使在缩放 11 上也是如此。

这可能吗?

更多解释:

(更多解释如下,以防问题没有意义)

默认情况下,如果 Javascript 客户端以缩放 11 重新开始,则不会显示任何内容(不好),但如果客户端以缩放 10 开始,然后放大到 11,则缩放 10 的已获取图块会被拉伸并显示(更好) 同时仍尝试从服务器获取缩放 11 个图块并获取 404。

我最好的尝试是设置tileLoadFunction选项,因为它被赋予了 [z, x, y] 值,并且显然可以设置平铺图像的 src。我说“显然”是因为我没有尝试过。问题是减小 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",
  }),
});
4

1 回答 1

1

您可以指定提供瓷砖的最小和最大缩放级别

  source: new XYZ({
    tileSize: [512, 512],
    url: "http://myserver/heatmap-z{z}-x{x}-y{y}.png",
    minZoom: 8,
    maxZoom: 10,
  }),

对于其他分辨率,视图将放大或缩小图块

于 2020-02-27T19:06:07.370 回答