Всплывающее окно на 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();

2 ответа

Никогда не использовал 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();

Я предполагаю, что вы передали пользовательскую карту OpenLayers на панель карт GeoExt вместо использования по умолчанию. Установите для свойства "fallThrough" этой карты значение true, чтобы разрешить всплывание событий.

var map = new OpenLayers.Map({
    fallThrough: true
});
Другие вопросы по тегам