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 (画像のソース) を渡します。その結果、クリックするたびに別の画像が読み込まれ、Web ページに表示されますが、前の画像はクリアされません。したがって、Webページ上の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)を呼び出していますか?そのコードを2つの部分に分割します。

これがサンプルです、それはそれを説明するはずです:http: //jsfiddle.net/mEHrN/6/

var jpl_wms = ...について-Landsat画像を表示するWMSレイヤーを作成します(ただし、そのURLは機能していないようです)。削除する場合は、map.addLayersからも削除することを忘れないでください。

map.addLayers([graphic]); 

おそらくこれが理由で、JSエラーが発生した理由です。

于 2012-10-11T20:37:39.817 に答える