首页 > 解决方案 > 在 openlayers 的共享视图中使用同一层

问题描述

我想在两个视图中渲染同一层,但遇到了问题。该图层一次显示在一张地图上。如果放大或缩小,它有时会反映在视图 1 上,有时会反映在视图 2 上。

var roadLayer = new TileLayer({
  source: new OSM(),
});

var view = new View({
  center: [-6655.5402445057125, 6709968.258934638],
  zoom: 13,
});

var map1 = new Map({
  target: 'roadMap',
  layers: [roadLayer],
  view: view,
});

var map2 = new Map({
  target: 'aerialMap',
  layers: [roadLayer],
  view: view,
});

在此处输入图像描述

标签: openlayersopenlayers-6

解决方案


升级说明中提到了https://github.com/openlayers/openlayers/blob/main/changelog/upgrade-notes.md#layers-can-only-be-added-to-a-single-map

但是,您可以在两层中使用相同的源:

var source = new OSM();

var view = new View({
  center: [-6655.5402445057125, 6709968.258934638],
  zoom: 13,
});

var map1 = new Map({
  target: 'roadMap',
  layers: [
    new TileLayer({
      source: source,
    })
  ],
  view: view,
});

var map2 = new Map({
  target: 'aerialMap',
  layers: [
    new TileLayer({
      source: source,
    })
  ],
  view: view,
});

推荐阅读