获取OpenLayers 4中WMS层的范围
我想从BBOX参数动态检索OpenLayers中ImageWMS层的范围 我会用它(例如)缩放到图层的范围 目前,我的代码如下所示:获取OpenLayers 4中WMS层的范围,openlayers,openlayers-3,wms,mapserver,Openlayers,Openlayers 3,Wms,Mapserver,我想从BBOX参数动态检索OpenLayers中ImageWMS层的范围 我会用它(例如)缩放到图层的范围 目前,我的代码如下所示: var layer2 = new ol.layer.Image({ title: 'zone', visible: false, source: wmsSource2, extent: [952014.59,5571269.68,1272301.10,5862273.22] });
var layer2 = new ol.layer.Image({
title: 'zone',
visible: false,
source: wmsSource2,
extent: [952014.59,5571269.68,1272301.10,5862273.22]
});
...
// in the layers tab, zoom map to layer when zoom icon is clicked
$('.fa-search').on('click', function() {
var layer = layer2;
view.fit(layer.getExtent(), {
duration:1000
});
});
如您所见,现在我在层
变量中定义范围
相反,我希望从WMS本身获得它,而不是在我的js中重新定义它
从文档中可以看出,我可以在params
选项中设置BBOX WMS参数。更好的是,它是由OL4自动设置的
所以,问题是:如果可能的话,我如何从这个参数中检索BBOX?如果有必要的话,我将使用Mapserver作为WMS服务器。您可以尝试这样的方法来检索BBOX的范围
map.on('click', function(evt) {
//get extent
var extent_coords = evt.map.getView().calculateExtent();
// get coordinates
var coords_view = evt.coordinate;
coords.innerHTML = [
coords_view[0].toFixed(3),
coords_view[1].toFixed(3)
]
bb_extent.innerHTML = [
extent_coords[0].toFixed(3),
extent_coords[1].toFixed(3),
extent_coords[2].toFixed(3),
extent_coords[3].toFixed(3)
].join('<br>')
});
map.on('click',函数(evt){
//获得范围
var extent_coords=evt.map.getView().calculateExtent();
//获取坐标
var coords_view=evt.coordinate;
coords.innerHTML=[
coords_视图[0]。toFixed(3),
coords_视图[1]。toFixed(3)
]
bb_extent.innerHTML=[
范围坐标[0]。固定(3),
范围坐标[1]。固定(3),
范围坐标[2]。固定(3),
范围坐标[3]。固定(3)
].join(“
”)
});
我希望下面的小提琴能把你们推向正确的方向,享受:)
您可以尝试这样的方法来检索BBOX的范围
map.on('click', function(evt) {
//get extent
var extent_coords = evt.map.getView().calculateExtent();
// get coordinates
var coords_view = evt.coordinate;
coords.innerHTML = [
coords_view[0].toFixed(3),
coords_view[1].toFixed(3)
]
bb_extent.innerHTML = [
extent_coords[0].toFixed(3),
extent_coords[1].toFixed(3),
extent_coords[2].toFixed(3),
extent_coords[3].toFixed(3)
].join('<br>')
});
map.on('click',函数(evt){
//获得范围
var extent_coords=evt.map.getView().calculateExtent();
//获取坐标
var coords_view=evt.coordinate;
coords.innerHTML=[
coords_视图[0]。toFixed(3),
coords_视图[1]。toFixed(3)
]
bb_extent.innerHTML=[
范围坐标[0]。固定(3),
范围坐标[1]。固定(3),
范围坐标[2]。固定(3),
范围坐标[3]。固定(3)
].join(“
”)
});
我希望下面的小提琴能把你们推向正确的方向,享受:)
我最终遵循了这个例子 这有点棘手,但我希望这是值得的 基本上,使用下面的代码,我现在能够通过解析WMS GetCapabilities而不是在js中硬编码来检索层范围(至少到目前为止,其中一个是这样) 这样,如果我的WMS层发生变化,我就不必更新js。使用相同的解析器,我希望能够循环遍历每一层,以自动地将它们插入到我的openlayers代码中(这将是的下一个改进之一)
我最终遵循了这个例子 这有点棘手,但我希望这是值得的 基本上,使用下面的代码,我现在能够通过解析WMS GetCapabilities而不是在js中硬编码来检索层范围(至少到目前为止,其中一个是这样) 这样,如果我的WMS层发生变化,我就不必更新js。使用相同的解析器,我希望能够循环遍历每一层,以自动地将它们插入到我的openlayers代码中(这将是的下一个改进之一)
嗯,也许我找到了一个可能的解决办法。想知道是否有比解析GetCapabilities响应更直接的替代方法。可能还有其他解决方案,但都需要解析GetCapabilities响应,因为没有其他WMS操作提供层的完整范围。嗯,也许我找到了一个可能的解决方案。想知道是否有比解析GetCapabilities响应更直接的替代方法。可能还有其他解决方案,但都需要解析GetCapabilities响应,因为没有其他WMS操作提供层的完整范围。谢谢,但我不太确定这是我需要的。我不是想得到地图视图的范围,而是地图中(每个)WMS层的范围。这将允许我(例如)缩放到该层范围,我已经在从js中定义该层范围。相反,我可能需要从WMS本身检索它。谢谢,但我不太确定这是我需要的。我不是想得到地图视图的范围,而是地图中(每个)WMS层的范围。这将允许我(例如)缩放到该层范围,我已经在从js中定义该层范围。相反,我可能需要从WMS本身检索它。