簡體   English   中英

無法加載OpenLayers WMS圖層

[英]OpenLayers WMS layer doesn't load

我使用以下JavaScript塊嘗試顯示WMS層。 我正在使用OpenLayers 2.8。

地圖的基礎層(Openstreetmap)正確顯示,它縮放到正確的區域,層轉換器中顯示了“金字塔”層,但從未對其WMS服務進行任何請求 (因此URL,樣式和參數是事實是假人無所謂-甚至都不會嘗試讓它們變笨)。

當我平移或縮放足夠遠以便可以看到幾內亞灣時,OpenLayers 確實會嘗試獲取WMS圖層(但我所有的數據都在荷蘭)。 這表明存在投影問題(存在WGS84的(0,0)點),但我不明白為什么OpenLayers甚至不嘗試在其他地方獲取地圖圖層。 我的數據在EPSG:3857(網絡墨卡托)投影中。

/*global $, OpenLayers */
(function () {
    "use strict";

    $(function () {
        $(".map").each(function () {
            var div = $(this);

            var data_bounds = div.attr("data-bounds");
            console.log("data_bounds: " + data_bounds);

            if (data_bounds !== "") {
                var map = new OpenLayers.Map(div.attr("id"), {
                    projection: "EPSG:3857"});

                var extent = JSON.parse(data_bounds);
                var bounds = new OpenLayers.Bounds(
                    extent.minx, extent.miny,
                    extent.maxx, extent.maxy);

                map.addLayer(
                    new OpenLayers.Layer.OSM(
                        "OpenStreetMap NL",
                        "http://tile.openstreetmap.nl/tiles/${z}/${x}/${y}.png",
                        {buffer: 0}));

                map.addLayer(
                    new OpenLayers.Layer.WMS(
                        "pyramid", "http://rasterserver.local:5000/wms", {
                            layers: "test",
                            styles: "test"
                        }, {
                            singleTile: true,
                            isBaseLayer: false,
                            displayInLayerSwitcher: true,
                            units: 'm'
                        }));

                map.addControl(new OpenLayers.Control.LayerSwitcher());
                map.zoomToExtent(bounds);
            }
        });
    });
})();

編輯:'data_bounds'控制台打印打印(帶有一些添加的格式):

data_bounds: {
    "minx": 582918.5701295201,
    "miny": 6923595.841021758,
    "maxx": 821926.9006116659,
    "maxy": 7079960.166533174
}

它會放大到荷蘭北部的正確區域,因此我認為問題不存在。

自發布以來,我發現,如果我不使用OSM層,而是將WMS層用作基礎層,那么它將起作用。 那么,也許與OSM基本層和添加的WMS層存在一些不兼容? 但后來我不明白它似乎確實在WGS84(0,0)附近做某事。

我最終設法通過給地圖一個明確的maxExtent來解決此問題:

var extent = JSON.parse(data_bounds);
var bounds = new OpenLayers.Bounds(
    extent.minx, extent.miny,
    extent.maxx, extent.maxy);

var map = new OpenLayers.Map(div.attr("id"), {
    projection: "EPSG:3857",
    maxExtent: bounds
});

奇怪的是,這並不限制用戶在世界范圍內平移和縮放的能力,但是確實可以使覆蓋工作……

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM