1

我知道网上有很多关于此的帖子,但我无法将 GeoServer 中的 WMS 层加载到 OpenLayers 中。OpenLayers 将图层添加到“图层切换器”,但无处可见。我不确定它是否会有所不同(我不知道它会如何),但我的图层存储在 PostGIS 数据库中,我可以在 GeoServer 的图层预览中很好地查看它。该图层位于 EPSG 4326 中,我知道这是 OpenLayers 默认值,我将其添加到 OSM 底图。这是我在 GeoServer 图层预览 URL 中的完整 URL:

http://localhost:8080/geoserver/envision/wms?service=WMS&version=1.1.0&request=GetMap&layers=envision:basecamp_property&styles=&bbox=115.753479003906,-32.2068328857422,116.16431427002,-31.9231204986572&width=512&height=353&srs=EPSG:4326&format=application/openlayers

这是我让 OpenLayers 访问和添加图层的代码:

var wms = new OpenLayers.Layer.WMS('Rezoning Scenario',
                          'http://localhost:8080/geoserver/envision/wms',
                          {'layers': 'envision:basecamp_property'},
                          {isBaseLayer: false}
                      );
    map.addLayer(wms);

任何想法为什么它可能不起作用?

提前致谢。

4

2 回答 2

2

最后!除了在 GeoServer 中从 4325 重新投影到 900913 之外,我还必须在图层属性中将投影声明为 900913,如下所示:

var wms = new OpenLayers.Layer.WMS('Rezoning Scenario',
                          'http://localhost:8080/geoserver/envision/wms',
                          {'layers': 'envision:basecamp_property'},
                          {isBaseLayer: false,
                           projection: 'EPSG:900913'} //This part was required!
                      );
    map.addLayer(wms);

出于某种原因,我发现没有多少示例必须这样做,但我确实让它工作。

R

于 2013-11-11T03:24:40.123 回答
0

这可能是因为 OSM 层实际上在投影EPSG:900913中,而 WMS 层在EPSG:4326. 由于您是 WMS 的管理员,因此您可能最容易在那里进行转换,即EPSG:900913从您的地理服务器请求 WMS。

查看这些链接以获取更多信息:

http://blog.sumbera.com/2010/02/17/overlay-wms-on-google-in-openlayers/

http://osgeo-org.1560.x6.nabble.com/WMS-reprojection-td3912439.html

于 2013-11-08T12:10:18.227 回答