2

wms サーバーに接続しているマップを使用して、単純なサイトを作成しました。問題は、地図が表示されず、小さな写真が表示されることです。ここに私が作成したサイトがあります: http://dl.dropbox.com/u/2418858/index.html

これが私が使用しているコードです:

<script type="text/javascript">
        var map;
        var wms;
        var map_controls = [new OpenLayers.Control.LayerSwitcher(),
                             new OpenLayers.Control.PanZoomBar(), 
                             new OpenLayers.Control.MouseToolbar(), 
                             new OpenLayers.Control.KeyboardDefaults()];

        function init() {
            map = new OpenLayers.Map("map", {
                controls : map_controls
            });
            wms = new OpenLayers.Layer.WMS("Satellitenbild_30m", "http://gis.lebensministerium.at/wmsgw/", {
                layers : 'Satellitenbild_30m',
                key : '6ae2a41178c77ccee1db7248c9f92b04',
            }, {
                projection : new OpenLayers.Projection('EPSG:32632'),
                singleTile : true,
                buffer : 0,
                ratio : 1
            });

            map.addLayer(wms);

            map.zoomToMaxExtent();

        }
    </script>
</head>
<body onload=init()>
    <div id="map" style="width: 1000px; height: 1000px"></div>
    </div>
</body>

Spatial Commander (GIS デスクトップ プログラム) を使用しているときはマップが表示され、ズームインおよびズームアウトできますが、Openlayers を使用しているときはマップが表示されません。

そこで私が行ったことは、Spatial Commander からのリクエストをプロキシでインターセプトして、このリクエストが私の Web サイトから送信されたものとどのように異なるかを確認することです。

私が見つけた唯一の違いは、SC では次のように見える BBOX パラメータでした。

BBOX=495149.712089618,4954209.6147000715,1173065.9355847104,5633477.615310807

私のウェブページから送信されたリクエストのパラメーターは次のようになりました。

BBOX=-351.5625,-351.5625,351.5625,351.5625

そこで、自分の Web ページから送信された BBOX パラメータを手動で変更し、これを取得しました: 手動リクエストマップがありました!

今私の実際の質問:

  • 私のウェブサイトに地図が表示されないのはなぜですか?
  • Openlayers から自動的に送信される BBOX パラメータが、空間コマンダーから送信される値と大きくかけ離れているのはなぜですか?
  • マップを機能させるにはどうすればよいですか?

ありがとう!

4

3 に答える 3

2

オブジェクトのプロパティ maxResolutionを設定してみてください:map

map = new OpenLayers.Map("map", {
    controls : map_controls,
    maxResolution: 1000
}); 
于 2012-01-30T08:28:59.000 に答える
1

OpenLayersは、いくつかのプロジェクション(Webメルカトル図法とWGS84)自体のみを処理します。他のプロジェクションについては、http://proj4js.org/で入手可能なProj4jsライブラリを含める必要があります。

OpenLayersは、利用可能な場合(つまり、Webページに追加された場合)にこのライブラリーと自動的に統合されます。

次に、プロジェクションのプロジェクションパラメータを追加します(コードで使用する前に)。この場合、EPSG:32632

ほぼすべての投影の詳細は、http://spatialreference.org(サイトが稼働しているとき)からProj4js形式で取得できます。

Proj4js.defs["EPSG:32632"] = "+proj=utm +zone=32 +ellps=WGS84 +datum=WGS84 +units=m +no_defs";

http://spatialreference.org/ref/epsg/32632/proj4js/

ただし、WMSサービスの機能を見ると(Webメルカトル図法でも要求できます)、再投影の必要はありません。

最後に、送信したデモリンクは、少なくともFireFoxではマップを表示しています。JavaScriptエラーがないことを確認しますか?この行には余分なコンマがあります:

key : '6ae2a41178c77ccee1db7248c9f92b04',

これにより、InternetExplorerがマップの表示を停止することがよくあります。

于 2012-01-28T11:56:22.840 に答える