2012-10-11 2 views
0

나는 동적으로로드 된 이미지를 표시하기 위해 OpenLayers를 사용하고 있습니다. 내가 사용하고 코드입니다 : 내가 버튼을 클릭 이벤트에이 함수를 호출하고 그 시간에 strURL (이미지 출처)를 통과하고OpenLayers - clear 'map'div

 var map; 
     function init(strURL) { 
     map = new OpenLayers.Map('map'); 

     var options = { numZoomLevels: 3, 
       isBaseLayer: true, }; 

     var graphic = new OpenLayers.Layer.Image(
      'City Lights', 
      strURL + "?sc=page", 
      new OpenLayers.Bounds(-180, -88.759, 180, 88.759), 
      new OpenLayers.Size(580, 288), 
      options 
     ); 

    // graphic.events.on({ 
    //  loadstart: function() { 
    //  OpenLayers.Console.log("loadstart"); 
    //  }, 
    //  loadend: function() { 
    //  OpenLayers.Console.log("loadend"); 
    //  } 
    // }); 

    var jpl_wms = new OpenLayers.Layer.WMS("NASA Global Mosaic", 
      "http://t1.hypercube.telascience.org/cgi-bin/landsat7", 
      { layers: "landsat7" }, options); 

    map.addLayers([graphic, jpl_wms]); 


    map.addControl(new OpenLayers.Control.LayerSwitcher()); 
    map.zoomToMaxExtent(); 

    } 

. 결과는 클릭 할 때마다 다른 이미지가로드되어 웹 페이지에 표시되지만 이전 이미지는 지워지지 않습니다. 그래서 나는 웹 페이지에서 5 개의 다른 이미지가 5 번의 클릭으로 표시됩니다.

내 자바 스크립트 지식이 제한되어 있으므로 사과해야 할 바보 같은 질문입니다. 이 행동을 멈추는 방법? 도움을 주셔서 감사합니다.

또한, 나는 확실히 선을 이해하지 못했다 :

var jpl_wms = new OpenLayers.Layer.WMS("NASA Global Mosaic", 
     "http://t1.hypercube.telascience.org/cgi-bin/landsat7", 
     { layers: "landsat7" }, options); 

그러나 나는 내가 그들을 제거하면이 라인은 내가 JS 얻고 있기 때문에 오류를 필요로 알고 있습니다.

답변

1

그래서 현재 각 버튼을 클릭하여 init (strURL)을 호출하고 있습니까? 단지 기존의 이미지 레이어의 URL을 업데이트, 페이지로드

는 샘플입니다, 즉 그것을 설명한다 : - 그것은 WMS 층을 만들고, 그 랜드 샛 이미지를 표시해야 var에 jpl_wms 소개 http://jsfiddle.net/mEHrN/6/

= ... 이미지 층은 그것에 대해 setUrl (URL) 방법이있다 (하지만 해당 URL은 작동하지 않는 것 같습니다). 당신이 그것을 제거하면 map.addLayers에서 제거도 기억

map.addLayers([graphic]); 

아마 이것은 당신이 JS 오류를 가지고 왜 이유였다.

+0

각 클릭에 대해 맵 div의 html을 지워서 문제를 해결했지만 솔루션이 더 우수합니다. 시간을내어 그것을 대답하고 바이올린을 만들어 주셔서 감사합니다. – WhatsInAName