- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图通过在他们的官方页面上构建这个示例代码来取消绑定(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/
我是一名优秀的程序员,十分优秀!