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());
});
我是 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());
});