2011-03-21 6 views
0

페이지의 링크를 클릭 할 때 작은 팝업 창이 나타납니다. 하지만 시간의 절반이 지났습니다. "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

이것에 대해 어떤 진전이 있습니까? –

답변

0

그것은 당신이하기 전에 코드를 실행하는 것이 될 수있다 : 나는 여기

지도를로드하는 코드의 ... 다른 페이지에있는지도의 전체 화면 버전에서 오류가 발생하지 않습니다 OSM 생성자가있는 js 파일이 완전히로드되었습니다. 코드를 실행하기 전에 document.onReady 이벤트를 기다리지 않으면 일반적입니다. 처음으로 페이지를로드 할 때 서버에서 js 파일을로드하는 데 몇 초의 시간이 걸리므로 페이지 코드에서 사용하기에는 너무 늦습니다. 두 번째로 js 코드가 캐시되어 페이지 코드에 액세스 할 수 있도록합니다.

언제 initialize() 함수를 호출합니까?

관련 문제