2016-02-24 40 views
1

我在使用新的OpenLayers。我正在尝试使用版本3.0和3.13进行一些练习。的OpenLayers 3.13:问题与bindTo通过连接两个视图

我必须连接两个观点:第二张地图应对在第一张地图的变化,但缩小了三次;当第一张地图被平移或放大时,第二张地图应居于同一位置,并保持缩小到三个级别。 我使用的是以下代码,在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

有没有'bindTo'了,看到https://github.com/openlayers/ol3/拉/ 3472。 –

+0

@JonatasWalker:谢谢。如果您将此评论添加为答案,我会接受它。 – Sefran2

回答

2

由于PR #3472没有bindTo方法,你能达到这个中心,像结合:

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