Gis OpenLayers,如何限制WMS层范围
我能够使用maxExtent和restrictedExtent属性创建OpenLayers贴图 此外,我还使用了WMS层及其maxExtent属性,但在WMS层中使用singleTile时会出现问题 我想要的是有一个WMS层,它只从服务器获取一个图像,但限制在我想要的范围内。因为我使用了singleTile=true、ratio=1和maxExtend=my\u所需的\u范围。 但它总是要求整个地图视图 有什么想法可以实现吗。 提前谢谢 下一个代码显示了一个带有基本层和海岸线层的地图,我想在singleTile模式下使用它,并限制它们必须向WMS请求的are:Gis OpenLayers,如何限制WMS层范围,gis,openlayers,Gis,Openlayers,我能够使用maxExtent和restrictedExtent属性创建OpenLayers贴图 此外,我还使用了WMS层及其maxExtent属性,但在WMS层中使用singleTile时会出现问题 我想要的是有一个WMS层,它只从服务器获取一个图像,但限制在我想要的范围内。因为我使用了singleTile=true、ratio=1和maxExtend=my\u所需的\u范围。 但它总是要求整个地图视图 有什么想法可以实现吗。 提前谢谢 下一个代码显示了一个带有基本层和海岸线层的地图,我想在si
<script type="text/javascript" src="http://openlayers.org/api/2.11/OpenLayers.js"></script>
<div id="map" style="width: 700px; height: 500px;"></div>
<script type="text/javascript">
var map = new OpenLayers.Map("map");
var wms = new OpenLayers.Layer.WMS("OpenLayers WMS Basic", "http://labs.metacarta.com/wms/vmap0",
{
layers: 'basic'
});
map.addLayer(wms);
var restricted = new OpenLayers.Layer.WMS("Coast Line", "http://labs.metacarta.com/wms/vmap0",
{
layers: 'coastline_01,coastline_02'
},
{
opacity: 0.6,
singleTile: true,
ratio: 1,
isBaseLayer: false,
maxExtent: OpenLayers.Bounds.fromString("-10,-90,30,90")
});
map.addLayer(restricted);
map.setCenter(new OpenLayers.LonLat(0,40), 3);
</script>
var map=newopenlayers.map(“map”);
var wms=新的OpenLayers.Layer.wms(“OpenLayers wms Basic”http://labs.metacarta.com/wms/vmap0",
{
图层:“基本”
});
地图添加层(wms);
var restricted=新的OpenLayers.Layer.WMS(“海岸线”http://labs.metacarta.com/wms/vmap0",
{
图层:“海岸线_01,海岸线_02”
},
{
不透明度:0.6,
是的,
比率:1,
isBaseLayer:false,
maxExtent:OpenLayers.Bounds.fromString(“-10,-90,30,90”)
});
map.addLayer(受限);
地图设置中心(新OpenLayers.LonLat(0,40),3);
我正在查看OpenLayers源代码,似乎我想要的还没有实现,所以我需要创建一些WMS子类或重新定义一些WMS层方法。
我将感谢任何帮助。
谢谢。如果您希望将整个地图限制在您所谈论的范围内,并且不允许用户在范围外平移,您可以尝试以下方法
var extent = new OpenLayers.Bounds({-10,-90,30,90});
function init() {
var options = {
restrictedExtent: extent
};
map = new OpenLayers.Map('map', options);
var restricted = new OpenLayers.Layer.WMS("Coast Line", "http://labs.metacarta.com/wms/vmap0",
{
layers: 'coastline_01,coastline_02'
},
{
opacity: 0.6,
singleTile: true,
ratio: 1,
isBaseLayer: false
});
map.addLayer(restricted);
这里的不同之处在于,我在整个地图上设置了范围,而不仅仅是图层。请注意,您还需要控制最大缩放级别。如果不这样做,用户仍然可以缩小并显示传递的数据范围,尽管他们无法在地图上平移视图
如果希望贴图平移到指定范围之外,而不是该层,则有多种方法
请注意,我尚未测试此代码,可能需要进行一些改进才能使其正常工作。到目前为止,您能否分享您的代码?帮助起来容易多了。你解决了这个问题吗??如果是,请张贴解决方案?
var myfilter = new OpenLayers.Filter.Spatial({
type: OpenLayers.Filter.Spatial.BBOX,
value: OpenLayers.Bounds.({-10,-90,20,90})})
var filterStrategy = new OpenLayers.Strategy.Filter({filter: myFilter});
var restricted = new OpenLayers.Layer.WMS("Coast Line", "http://labs.metacarta.com/wms/vmap0",
{
layers: 'coastline_01,coastline_02'
},
{
opacity: 0.6,
singleTile: true,
ratio: 1,
isBaseLayer: false,
strategies: [filterStrategy]
});
map.addLayer(restricted);