2014-07-25 51 views
1

我有一個佈局類型'邊框',並在'中心'面板我有一個MapPanel。 我想用下面的代碼顯示一個無模式的彈出窗口。 它工作正常,我可以拖動和調整大小。但是在調整大小的時候,如果我用鼠標在彈出區域(和MapPanel區域內)之外拖動,那麼我鬆散地控制這個動作(虛線代表彈出邊框消失)。但是,如果我堅持將MapPanel區域移動到「西部」或「南部」面板外,那麼我將再次控制此操作(出現虛線)。我認爲MapPanel將在鼠標懸停在其上時進行鼠標控制。這種行爲讓調整彈出仍然可能,但有點乏味。在MapPanel上彈出很難手動調整大小

如果我在顯示彈出窗口時禁用MapPanel,調整大小效果很好,但那不是我想要的。我想顯示一個無模式的彈出窗口。

上的任何解決辦法的任何想法?...

var mapPanel = Ext.ComponentQuery.query('viewMapPanel')[0]; 
Ext.create('GeoExt.window.Popup', { 
    map: mapPanel.map, 
    title: 'test', 

    frame: true, 
    border: false, 
    resizable: true,   
    draggable: true, 
    closable: true, 

    height: 400, 
    width: 200, 

    shadow: true, 
    shadowOffset: 20, 

    //modal:true 


}).show(); 

回答

1

沒用過GeoExt。但我用:http://code.betancourt.us/ext-map/與xtype:'gmappanel'成功。你可以使用一個普通的Ext.window並做佈局:'fit',items:{map},它沒有這些問題。 我認爲你可以做同樣的事情,而不是使用GeoExt,只是使用Ext.create('Ext.window.Window',{並讓它彈出一個常規窗口,你可以選擇一個佈局,然後把你的mapPanel放入項目。

var map = Ext.create('Ext.window.Window', { 
     title: 'I love Maps', 
     collapsible: true, 
     animCollapse: true, 
     maximizable: true, 
     width: 950, 
     height: 600, 
     minWidth: 200, 
     minHeight: 200, 
     layout: 'fit', 
     items: [{mapPanel}], 
     dockedItems: [{ 
      xtype: 'toolbar', 
      dock: 'bottom', 
      ui: 'footer', 
      layout: { 
       pack: 'center' 
      }, 
      items: [{ 
       minWidth: 80, 
       text: 'Close', 
       xtype: 'button' 

      }] 
     }] 
    }); 
    map.show(); 
+0

謝謝回答。沒有,我剛剛嘗試過你有趣的示例,但我仍然遇到了問題,請注意,MapPanel位於彈出框後面,而不是在彈出框內:這就是問題所在。 e GeoExt.window.Popup中的背景MapPanel引用,因爲該彈出類是必需的。問題在於在他後面的MapPanel區域上拖動彈出窗口:MapPanel將'竊取'鼠標移動事件,並且只有在鼠標退出其區域時纔會返回。 – Franz

0

我假設你交出了一個自定義的OpenLayers映射到GeoExt地圖面板,而不是使用默認值。設置property "fallThrough" of that map爲true,允許冒泡事件。

var map = new OpenLayers.Map({ 
    fallThrough: true 
});