首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖Open Layer 3中自动计算的TileWMS请求属性

覆盖Open Layer 3中自动计算的TileWMS请求属性
EN

Stack Overflow用户
提问于 2015-07-15 05:56:58
回答 2查看 1.6K关注 0票数 0

我有一个在EPSG:4326中托管层服务的GeoServer 2.5实例,并由具有默认EPSG:3857投影的OpenLayers 3地图使用。使用基本的wms层一切正常,但气泡和标签的碎片化需要我使用单个Tile或Meta-Tiled请求。

我正在使用geoserver的required属性构建layer对象,但是OpenLayers覆盖了其中的许多属性,我认为这阻碍了Meta-Tiling的实际工作。

这在Leaflet中工作得很好,所以我知道GeoServer上没有问题,所以我肯定遗漏了什么。任何帮助都是非常感谢的。

代码语言:javascript
复制
   var mapBounds = this.getCurrentBounds('EPSG:4326');
   var mapSWOrigin = [mapBounds._southWest.lng, mapBounds._southWest.lat].toString();

   var wmsLayer = new ol.layer.Tile({
                    extent: [-20026376.39, -20048966.10, 20026376.39, 20048966.10],  //epsg:3857 extent
                    preload: true,
                    source: new ol.source.TileWMS({
                        url: window.location.origin+"/geoserver/wms/",
                        params: {
                            'LAYERS': geoserverName, 
                            'VERSION': '1.3',
                            'SRS': 'EPSG:4326', // THIS GETS OVERWRITTEN. also tried EPSG:3857
                            'BBOX': extent, //THIS GETS OVERWRITTEN. Tried extent of the current state of the map and the extent of the projection (ex: [21.99937, -18.07947, 33.7057, -8.22436])
                            'TILED': true,
                            'STYLES': layer.getSldName() || "",
                            'TILESIZE': 256,
                            'FORMAT': 'image/png',
                            'TILESORIGIN': mapSWOrigin
                        },
                        serverType: 'geoserver'
                    }),
                    visible: true
            });

从浏览器控制台捕获的最终请求:

代码语言:javascript
复制
https://localhost:8443/geoserver/wms/?SERVICE=WMS
&VERSION=1.3.0
&REQUEST=GetMap
&FORMAT=image%2Fpng
&TRANSPARENT=true
&LAYERS=geodashboard%3Alv_sjym3xbpypz4un9nm3xnvy6873p1k1nn_1psl34vde5
&BBOX=3757032.814272985%2C-1252344.271424327%2C5009377.085697313%2C6.984919309616089e-10 // NOTICE THIS IS NOT EPSG:4326 UNITS
&TILED=true
&STYLES=lv_sjym3xbpypz4un9nm3xnvy6873p1k1nn_1psl34vde5
&TILESIZE=256
&TILESORIGIN=9.428462734375003%2C-18.869002237258456
&WIDTH=282
&HEIGHT=282
&CRS=EPSG%3A3857  // NOTICE THIS IS NOT EPSG:4326
&FORMAT_OPTIONS=dpi%3A99
EN

回答 2

Stack Overflow用户

发布于 2015-07-16 16:17:50

您使用的是SRS,而不是WMS 1.3所要求的CRS。

致以最好的问候,格哈德

票数 0
EN

Stack Overflow用户

发布于 2020-02-07 15:58:19

尝试一下示例代码

代码语言:javascript
复制
 var z = tileCoord[0];
  var x = tileCoord[1];
  var y = tileCoord[2];
  var tileGrid = source.getTileGrid();
  var tileGridOrigin = tileGrid.getOrigin();
  var tileSizeAtResolution = tileGrid.getTileSize(z) * tileGrid.getResolution(z);
  return [
      tileGridOrigin[0] + tileSizeAtResolution * x,
      tileGridOrigin[1] + tileSizeAtResolution * y,
      tileGridOrigin[0] + tileSizeAtResolution * (x + 1),
      tileGridOrigin[1] + tileSizeAtResolution * (y + 1)
  ];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31418090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档