覆盖自动计算的TileWMS请求属性在开放层3
Overwrite automatically calculated TileWMS request properties in Open Layers 3
我在EPSG:4326中有一个GeoServer 2.5实例托管层服务,并由默认EPSG:3857投影的OpenLayers 3地图消费。使用基本的wms层一切都很好,但是气泡和标签的碎片要求我使用Single Tile或Meta-Tiled wms请求。
我正在用geoserver所需的属性构建层对象,但OpenLayers覆盖了其中的许多,我认为这阻止了Meta-Tiling的实际工作。
这在传单上工作得很好,所以我知道在GeoServer上没有问题,所以我一定错过了什么。如有任何帮助,不胜感激。
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
});
从浏览器控制台捕获的结果请求:
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
您正在使用SRS而不是CRS,这是WMS 1.3所需的。
最诚挚的问候,格哈德
试试样例代码
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)
];
相关文章:
- 哪个 JavaScript 库在请求对象上设置 _parsedUrl 属性
- Ember:当子控制器同时观察到父控制器触发请求的相同属性时
- 错误:在 Firefox 中访问 AJAX 请求的属性“nodeType”的权限被拒绝
- 使用Javascript重定向并设置请求属性
- 尝试更改HTML属性时出现奇怪的get请求
- 如何在JavaScript中将JSP请求属性转换为字符串并将其分配给对象
- 在提交表格时IE8赢得了't将来自输入的属性以外的属性添加到请求中
- 如何在 ajax 请求的回调中设置 ngInclude 元素的 src 属性
- 从 XMLHttpRequest 对象获取请求属性
- Drupal 7 Field API:如何以编程方式发送表单元素属性 #ajax 指定的AJAX请求
- 在 Laravel 5.2 的发布请求中传递 Algolia id 属性而不是 Name Atributre
- 来自 jsp 和 javascript 中的请求属性的对象索引数组
- 当对服务器的 ajax 请求失败时如何使用 defaults 属性
- 从数据属性动态获取 JQuery Ajax 请求的 URL
- Html5 数据属性在 ajax 请求后未更新
- 设置属性但也发送请求的方法的正确名称
- 如何中止 Bacon.js 属性,该属性在到达 404 后发出 AJAX 请求
- 具有对象类型的参数,其属性名称/值各不相同.需要在GET请求中通过URL发送道具名称/值
- 如何使用javascript使用请求中的属性
- 富人脸 vs 素数面孔:无法读取未定义的属性“请求”