Open Layers 3:如何在并排映射上解除bindTo事件的绑定
Open Layers 3: How to unbind a bindTo event on side-by-side maps?
我正试图通过在开放层3的官方页面上构建以下示例代码来解除对并排地图的绑定:
http://ol3js.org/en/master/examples/side-by-side.html
我想对解除地图绑定的页面进行调用。到目前为止,我尝试使用这里记录的"unbind"answers"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();
有什么建议或替代方案我应该试试吗?
并排的例子有点误导。那里的三个映射可以在没有bindTo
调用的情况下共享一个视图。
例如,这里两个地图共享一个视图:
// 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
});
这是一种更直接的"同步"两个映射的方法。不同之处在于,如果使用bindTo
将一个贴图的视图属性绑定到另一个贴图,则在调用map.setView(newView)
时,两个贴图的查看都将发生更改。区别是微妙但重要的。在这两种情况下,都可以由多个地图共享一个视图。如果调用bindTo
,则在调用map.setView()
时,所有具有绑定视图属性的贴图也将更新。
因此,如果您想给并排示例中的一个映射一个新视图,而不给它们所有的视图,则必须首先解除视图属性的绑定,然后调用setView
。
// give only the canvasMap a new view
canvasMap.unbind('view');
canvasMap.setView(new ol.View({center: [0, 0], zoom: 1}));
您应该能够确认在unbind
调用之后,所有映射仍然共享相同的视图实例(例如canvasMap.getView() === domMap.getView()
)。
相关文章:
- 分派点击事件并保留击键修饰符
- 模糊事件的Javascript测试
- keyup事件处理程序更改焦点不适用于快速键入
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何使Javascript动态html表及其上的事件
- 使用类从一个标记中双击事件
- 如何在未直接触发的情况下停止事件
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 对iPad上的点击事件反应缓慢
- 事件和状态
- Fancybox是否将Click事件静音
- 主干-不管怎样,检查事件以前是否绑定过
- 从控制器返回后Ajax启动事件激发
- 如何从画布上的某个移动事件中获取X和Y
- Jquery:未触发select事件
- JsFiddle上的鼠标事件不起作用
- 只覆盖箭头键滚动事件
- $window.ga在AngularJS事件中未定义
- cron作业与Javascript计时事件
- Open Layers 3:如何在并排映射上解除bindTo事件的绑定