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