gpt4 book ai didi

javascript - 打开第 3 层 : How to unbind a bindTo event on side-by-side maps?

转载 作者:行者123 更新时间:2023-11-30 17:30:34 25 4
gpt4 key购买 nike

我试图通过在他们的官方页面上构建这个示例代码来取消绑定(bind) Open Layers 3 中的并排 map :

http://ol3js.org/en/master/examples/side-by-side.html

我想调用取消绑定(bind) map 的页面。到目前为止,我尝试使用此处记录的“unbind”和“unbindAll”调用:

http://ol3js.org/en/master/apidoc/ol.Object.html

我已经尝试了以下每个调用,但都没有成功:

domMap.unbind('view');
domMap.unbindAll();

webglMap.unbind('view');
webglMap.unbindAll();

canvasMap.unbind('view');
canvasMap.unbindAll();

...有什么我应该尝试的建议或替代方案吗?

最佳答案

side-by-side example有点误导。那里的三个 map 可以在没有 bindTo 调用的情况下共享一个 View 。

例如,这里有两个 map 共享一个 View :

// one view shared by two maps
var view = new ol.View({
center: [0, 0],
zoom: 1
});

var map1 = new ol.Map({
target: 'map1',
view: view
});

var map2 = new ol.Map({
target: 'map2',
view: view
});

这是一种“同步”两个 map 的更直接的方法。不同之处在于,如果您使用 bindTo 将一个 map 的 View 属性绑定(bind)到另一个 map ,则当您调用 map.setView(newView) 时,两个 map 的 View 都会更改.区别很微妙但很重要。在这两种情况下,您都可以让多个 map 共享一个 View 。如果您调用 bindTo,当调用 map.setView() 时,所有具有绑定(bind) View 属性的 map 也会更新。

因此,如果您想为并排示例中的其中一张 map 提供一个新 View 而不为所有 map 提供一个新 View ,您首先必须取消绑定(bind) View 属性,然后然后调用 setView

// give only the canvasMap a new view
canvasMap.unbind('view');
canvasMap.setView(new ol.View({center: [0, 0], zoom: 1}));

您应该能够确认在 unbind 调用之后,所有 map 仍然共享相同的 View 实例(例如 canvasMap.getView() === domMap.getView()).

关于javascript - 打开第 3 层 : How to unbind a bindTo event on side-by-side maps?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23164282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com