OpenLayers 3.13:通过链接两个视图来解决 bindTo 问题

OpenLayers 3.13: issue with bindTo by linking two views

我是 OpenLayers 的新手。我正在尝试使用 3.0 和 3.13 版本做一些练习。

我要link两个视图:第二张地图响应第一张地图的变化,但缩小了三倍;当平移或缩放第一张地图时,第二张地图应以同一位置为中心并保持三个级别的缩小。 我使用的以下代码在 3.0 版上运行良好,但在 v3.13 上运行不佳:控制台打印 Uncaught TypeError: view2.bindTo is not a function

在另一个示例中,我在 v3.13 上使用 map2.bindTo('view', map);,没有任何问题。有什么区别?

编辑 我错了,我得到了同样的问题。 不再有 bindTo(有关详细信息,请参阅 Jonatas Walker 的评论)。

var layer = new ol.layer.Tile({
  source: new ol.source.OSM()
});

var london = ol.proj.transform([-0.12755, 51.507222], 'EPSG:4326', 'EPSG:3857');

var view = new ol.View({
  center: london,
  zoom: 6,
});

var view2 = new ol.View({
  center: london,
  zoom: 3,
});

var map = new ol.Map({
  target: 'map1',
  layers: [layer],
  view: view,
  //renderer: 'dom'
});

var map2 = new ol.Map({
  target: 'map2',
  layers: [layer],
  controls: new ol.Collection(),
  interactions: new ol.Collection(),
  view: view2
});

view2.bindTo('center', view);

view.on('change:resolution', function(){
  var zoom = this.getZoom();
  if (zoom >= 3 && zoom <= 18)
    view2.setZoom(this.getZoom()-3);
  else view2.setZoom(this.getZoom());
});

因为 PR #3472 没有 bindTo 方法,你可以用类似的东西实现这个中心绑定:

view.on('change:center', function(evt){
  view2.setCenter(view.getCenter());
});