簡體   English   中英

打開第3層:如何取消並排地圖上的bindTo事件的綁定?

[英]Open Layers 3: How to unbind a bindTo event on side-by-side maps?

我正在嘗試通過在其官方頁面上的以下示例代碼進行構建來解除在Open Layers 3中的並排地圖的綁定:

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

我想調用取消綁定地圖的頁面。 到目前為止,我嘗試使用此處記錄的“ 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();

...我有什么建議或替代方法?

並行的示例有點誤導。 那里的三個地圖可以共享一個視圖,而無需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將一個地圖的view屬性綁定到另一個地圖,則當您調用map.setView(newView)時,兩個地圖的視圖都會更改。 差異是微妙的,但很重要。 在這兩種情況下,您都可以擁有一個由多個地圖共享的視圖。 如果調用bindTo ,則在調用map.setView()時,還將更新所有具有綁定視圖屬性的地圖。

因此,如果要在並排示例中為其中一個地圖提供新視圖而又不為它們提供所有新視圖,則必須首先取消綁定view屬性,然后調用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() )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM