[英]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.