2011-03-21 56 views
0

我有一個小的彈出窗口,我加載用戶點擊頁面上的鏈接。但是大約有一半時間,我在firebug的console.log中獲得「OpenLayers.Layer.OSM.Mapnik不是構造函數」。如果我關閉彈出窗口(這是一個jqueryui對話框),然後再次單擊鏈接,它可能不會出錯。但是,如果我關閉它並再次打開,我會再次出現錯誤。這很奇怪。隨機獲得OpenLayers.Layer.OSM.Mapnik不是一個構造函數

如果我完全刷新頁面,第一次點擊時會出現錯誤,但關閉後我會看到地圖。

在我失蹤的較小窗口中加載地圖是否有一些祕密?我不明白的錯誤在不同的頁面在地圖上的全屏版本...

下面是加載地圖代碼:

var map = undefined, 
popup = undefined; 

function initialize(){ 
    var center_lat = "39.828175"; 
    var center_long = "-98.579500"; 
     OpenLayers.ImgPath = "/images/openlayers/"; 
    map = new OpenLayers.Map ("map", { 
     controls:[ 
      new OpenLayers.Control.Navigation(), 
      new OpenLayers.Control.PanZoomBar()], 
     }); 
    var scalebar = new OpenLayers.Control.ScaleBar({displaySystem: "english",align: "right"});// this is an external library that is loaded as a js file and works great on the full screen map too.... 
    map.addControl(scalebar); 

    layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Open Street Maps"); 
    map.addLayer(layerMapnik); 
    lonLat = OLL(center_long, center_lat); 
    map.setCenter (lonLat, 13); 
} 
+0

你有什麼進展嗎? – 2011-04-18 13:59:07

回答

0

這可能是因爲您之前執行代碼帶有OSM構造函數的js文件已完全加載。如果您在執行代碼之前沒有等待document.onReady事件,這很常見。第一次加載頁面時,需要從服務器請求js文件,需要十分之幾秒才能加載,因此在頁面代碼中使用太遲。第二次緩存js代碼,使其可以訪問頁面代碼。

你什麼時候調用initialize()函數?

相關問題