2011-03-21 55 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()函数?

相关问题