gpt4 book ai didi

javascript - OpenLayers WMS 层不加载

转载 作者:行者123 更新时间:2023-11-30 05:37:22 29 4
gpt4 key购买 nike

我使用以下 JavaScript block 来尝试显示 WMS 图层。我正在使用 OpenLayers 2.8。

map 的基础图层 (Openstreetmap) 显示正确,它缩放到正确的区域,“金字塔”图层显示在图层切换器中,但从未对其 WMS 服务发出任何请求(所以 URL、样式和参数是虚拟的这一事实应该无关紧要——它甚至从不尝试获取它们)。

OpenLayers 确实在我平移或缩放到足以看到几内亚湾(但我的所有数据都在荷兰)时尝试获取 WMS 图层。这表明存在投影问题(WGS84 的 (0, 0) 点在那里),但我不明白为什么 OpenLayers 甚至不尝试在其他地方获取 map 层。我的数据采用 EPSG:3857 (Web Mercator) 投影。

/*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) 附近做了一些事情。

最佳答案

我最终设法通过给 map 一个明确的 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
});

奇怪的是,这并没有限制用户在世界范围内平移和缩放的能力,但它确实使叠加工作...

关于javascript - OpenLayers WMS 层不加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22909456/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com