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

时间:2016-02-24 15:22:38

标签: javascript openlayers-3

我是使用OpenLayers的新手。我试图用3.0和3.13版做一些练习。

我必须链接两个视图:第二个地图响应第一个地图中的更改,但缩小了三次;当第一张地图被平移或缩放时,第二张地图应居中于同一位置并保持缩小三个级别。 我使用以下代码在版本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());
});

1 个答案:

答案 0 :(得分:2)

由于PR #3472没有bindTo方法,您可以通过以下方式实现此中心绑定:

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