在OpenLayers中缩放到所有叠加层的范围


10

在Openlayers中,我可以像这样放大所有图层的边界框:

map.zoomToExtent();

我还可以缩放到单个图层的边界框:

map.zoomToExtent(layer_name.getDataExtent());

有没有一种简单的方法可以缩放到除基础层以外的所有层?换句话说,显示所有覆盖范围。

Answers:


6
  1. 遍历所有图层
    1. 跳过基础层[根据您的要求]
    2. 使用bounds.extend(...)构建包罗万象的bounds对象 API
  2. 缩放到结果界限API

我认为这是行不通的,因为extends()仅在被调用的范围比作为参数传递的范围小的范围内才有效。
pakman 2014年

我怎么能达到同样的使用OpenLayer API 3.X
imdadhusen

@imdadhusen您为什么不只查找文档?同样的方法。同一对象。不同的名称空间。 openlayers.org/en/v3.3.0/apidoc/ol.extent.html#extend
Vadim

1

修复map.restrictedExtent并调用map.zoomToExtent(map.restrictedExtent)怎么办?


那只会解决问题...我将如何找出叠加层的边界框以创建limitedExtent?
Mr_Chimp

您是否尝试过使用ZoomToMaxExtent()-但如果更大,它可能会缩放到基本图层范围?如果它不起作用,则必须检索每个ovelays图层的范围,并保留最大的图层以修复strictedExtent。
simo

我尝试了ZoomToMaxExtend()并将其缩放到基础层。我在问题中提到了这一点,但在重读时并不明显。保持最大的边界框不一定有效-即,如果两层不重叠。我想我必须以某种方式组合每层的边界框,然后得到结果对象的边界框...
Mr_Chimp 2011年

而已!并不是那么困难...但是我同意你的观点,令人惊讶的是这种方法还不存在(或者我们错过了什么;-) ..)
simo

好希望我们错过了一些东西!我暂时不提问题...以防万一!
Mr_Chimp
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.