1

OpenStreetMaps で OpenLayers を使用して小さな GIS アプリケーションを開発しています。isBaseLayer が false に設定されている場合、画像オーバーレイが機能していないようです。これが私のコードです。

  map = new OpenLayers.Map('map',{
                    eventListeners: {
                        "moveend": mapEvent,
                        "zoomend": mapEvent
                    }
                });
  OpenLayers.Layer.OSM.Toolserver = OpenLayers.Class(OpenLayers.Layer.OSM, {
      initialize: function(name, options) {
          var url = [
              "http://a.www.toolserver.org/tiles/" + name + "/${z}/${x}/${y}.png", 
              "http://b.www.toolserver.org/tiles/" + name + "/${z}/${x}/${y}.png", 
              "http://c.www.toolserver.org/tiles/" + name + "/${z}/${x}/${y}.png",
              "http://d.www.toolserver.org/tiles/" + name + "/${z}/${x}/${y}.png",
              "http://e.www.toolserver.org/tiles/" + name + "/${z}/${x}/${y}.png",
              "http://f.www.toolserver.org/tiles/" + name + "/${z}/${x}/${y}.png"
          ];
          options = OpenLayers.Util.extend({numZoomLevels: 19}, options);
          OpenLayers.Layer.OSM.prototype.initialize.apply(this, [name, url, options]);
      },
      CLASS_NAME: "OpenLayers.Layer.OSM.Toolserver"
  });
  l1=new OpenLayers.Layer.OSM.Toolserver('osm-labels-de', {isBaseLayer: false, visibility: true});
  l2=new OpenLayers.Layer.OSM.Toolserver('osm-no-labels', {isBaseLayer: true, visibility: true});
  var pic = new OpenLayers.Layer.Image(
    'shot',
    'shot.jpg',
    new OpenLayers.Bounds(13.409460,52.5207532,13.469466,52.5407532),    new OpenLayers.Size(100, 100),
    {alwaysInRange:true,isBaseLayer: false,transparent: true, visibility: true,numZoomLevels : 3 }
  );
  map.addLayers([pic,l1,l2]);
  map.setCenter(new OpenLayers.LonLat(13.409460,52.5207532).transform(
          new OpenLayers.Projection("EPSG:4326"),
          map.getProjectionObject()
          ),10);

レイヤー「pic」は、レイヤー「l1」と「l2」の間に表示されるはずです(picをKMLレイヤーに置き換えると、問題なく機能します)-しかし、どこにも表示されません-座標の問題か何かかわかりませんそうしないと。

この問題は、1 つのベース レイヤー「l2」とその上に「pic」をオーバーレイするだけに単純化できます。これも実現できません。

http://openlayers.org/dev/examples/image-layer.htmlで例を見ましたが、画像はベースレイヤーです - isBaseLayer を false に設定すると、画像が消えます。画像をベースレイヤーに設定してもかまいませんが、そうすると、画像のみが表示され、マップは表示されなくなります。

提案をお寄せいただきありがとうございます。

4

1 に答える 1

2

問題は、「pic」レイヤーの境界の変換の欠如であると確信しています。コードでは、transformメソッドを使用して地図の中心を設定します。正確な方法で、「pic」レイヤーの境界に使用する必要があります。

マップ上に画像レイヤーを設定するために使用するコードを確認してください。

    // World Geodetic System 1984 projection (lon/lat)
    var projWGS84 = new OpenLayers.Projection("EPSG:4326");

    var options = {   
        opacity: 1.0, 
        isBaseLayer: false,
        numZoomLevels: 20 
    };

    var extent = new OpenLayers.Bounds(WEST,SOUTH,EAST,NORTH)
        .transform(projWGS84, map.getProjectionObject());

    var imageLayer = new OpenLayers.Layer.Image('Image Layer',  
        'http://i.i.com.com/cnwk.1d/i/tim/2012/04/19/20120419_Java_Duke_mascot_001_610x418.jpg', 
        extent,
        new OpenLayers.Size(1,1),
        options);
于 2012-06-13T08:41:18.617 に答える