2013-03-10 113 views
0

我創建了包含通過Openlayers顯示的地圖的擴展Ext.Panel.panel組件,該組件位於Ext.Window.window中。 但經過負載頁面,地圖只顯示部分: http://habrastorage.org/storage2/17f/1be/3bd/17f1be3bdc2a9765c1852d93a95ee1b8.png在Ext.Window.window中顯示地圖不完全

Ext.define('MA.view.components.OpenlayersPanel', 
{ 
    extend: 'Ext.panel.Panel', 
    alias: 'widget.openlayerspanel', 
    multiSelect: true, 

    initComponent: function() 
    { 
     this.callParent(arguments); 
     this.on('afterrender', this.afterRender, this); 
    }, 

    afterRender: function() 
    { 
     this.map = new OpenLayers.Map(this.body.dom.id); 
     this.layer = new OpenLayers.Layer.OSM('OSM Map'); 
     this.fromProjection = new OpenLayers.Projection("EPSG:4326"); 
     this.toProjection = new OpenLayers.Projection("EPSG:900913"); 
     this.position = new OpenLayers.LonLat(75.1, 61.15).transform(this.fromProjection, this.toProjection); 
     this.zoom = 12; 
     this.map.addLayer(this.layer); 
     this.layer.setIsBaseLayer(true);   
     this.map.setCenter(this.position, this.zoom); 
    } 
}); 

app.js:

Ext.application(
{ 
    requires: ['Ext.container.Viewport'], 
    name: 'MA', 
    appFolder: 'app', 
    controllers: 
     [ 
      'Map' 
     ], 
    launch: function() 
    { 
     Ext.create('Ext.window.Window', 
      { 
       layout: 
       { 
        type: 'vbox' 
       }, 
       items: 
        [ 
         { 
          xtype: 'openlayerspanel' 
         }, 
         { 
          xtype: 'button', 
          text: 'Load', 
         } 
        ] 
      }).show(); 
    } 
}); 

當我調整瀏覽器,地圖刷新和正常顯示。 什麼修復使其工作?

回答

1

如果沒有工作,除了調整大小,試圖以編程方式調整:

//inside window listeners 
show: function(){ 
    this.setWidth(this.getWidth() + 1); // or height 
} 

或使用超時定義地圖 - 創建地圖顯示窗口後: 不AfterRender階段,但顯示

show: function(){ 
    setTimeout(function(){ 
    // init map here 
    }, 100) 
} 

或使用此代碼:

function ShowMapWindow() { 
    Ext.create('Ext.window.Window', { 
     width: 400, 
     height: 300, 
     items: [{ 
      loader: { 
       loadMask: { showMask: true }, 
       renderer: 'frame', 
       url: 'http://www.openstreetmap.org/export/embed.html?bbox=37.314,55.568,38.031,55.927&layer=mapnik' 
      } 
     }], 
     layout: "fit", 
     listeners: { 
      close: function() { 
       this.remove(true); 
      } 
     }, 
     modal: true 
    }).show(); 
} 

enter image description here

+0

如果調整大小Ext.Window.window - 地圖無變化,如果調整大小瀏覽器 - 地圖刷新。但是$(window).resize()映射也不會改變。 – 2013-03-10 07:38:12

+0

也不行... – 2013-03-10 15:09:52

+0

看着變化 – 2013-03-10 16:31:28

0

如果放大zoomIn()然後放大zoomOut(),該怎麼辦?或者將初始縮放設置爲11,然後在將地圖居中後調用zoomIn()。

1

我正在面對自己的問題,與第一個解決方案與幻想截圖的人是錯誤的。它與調整大小完全沒有關係,因爲如果您使用Google地圖而不是OSM,則它可以很好地工作。問題在於缺少地圖屬性,比如SRS,BBOX等。查看OpenLayers屬性的文檔,它將起作用。