0

我正在使用 OpenLayers 来显示动态加载的图像。我正在使用的代码是:

      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();

  }

我当时在按钮单击事件上调用此函数并传递 strURL(图像的来源)。结果是,每次单击都会加载不同的图像并在网页上显示,但不会清除前一个图像。所以我在网页上显示了 5 个不同的图像,点击 5 次,依此类推。

我的javascript知识有限,所以如果这是一个愚蠢的问题,我深表歉意。如何制止这种行为?感谢您的任何帮助。

另外,我不太明白这些行:

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

但我知道这些行是必需的,因为如果我删除它们,我会收到 js 错误。

4

1 回答 1

1

所以目前你在每次点击按钮时都调用 init(strURL) ?将该代码分为两部分:

这是示例,应该解释一下:http: //jsfiddle.net/mEHrN/6/

关于 var jpl_wms = ... - 它创建 WMS 图层,该图层应显示 Landsat 图像(但该 URL 似乎不起作用)。如果您将其删除,请记住还要将其从 map.addLayers 中删除:

map.addLayers([graphic]); 

可能这就是为什么你得到 JS 错误的原因。

于 2012-10-11T20:37:39.817 回答