OpenLayers - 清除'map'div

时间:2012-10-11 02:31:03

标签: html5 jquery-mobile openlayers

我正在使用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错误。

1 个答案:

答案 0 :(得分:1)

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

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

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

map.addLayers([graphic]); 

可能这是理由,为什么你有JS错误。