我是使用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());
});
答案 0 :(得分:2)
由于PR #3472没有bindTo
方法,您可以通过以下方式实现此中心绑定:
view.on('change:center', function(evt){
view2.setCenter(view.getCenter());
});