openlayers 3缩放到组合范围

openlayers 3缩放到组合范围,layer,openlayers-3,Layer,Openlayers 3,我正在使用openlayers 3创建一个顶部带有矢量特征的地图。到目前为止,一切顺利 我有几个向量层,分组在一个名为projecten的变量中 var projecten = new ol.layer.Group({ title: 'Projecten', layers: [ new ol.layer.Vector({ title: 'EVZ Den Dungen',

我正在使用openlayers 3创建一个顶部带有矢量特征的地图。到目前为止,一切顺利

我有几个向量层,分组在一个名为projecten的变量中

var projecten = new ol.layer.Group({

            title: 'Projecten',
            layers: [

                new ol.layer.Vector({
                title: 'EVZ Den Dungen',
                source: new ol.source.GeoJSON(
                            /** @type {olx.source.GeoJSONOptions} */ ({
                              object: EVZDenDungen,
                              projection: 'EPSG:3857'
                        })),
                style: function(feature, resolution) {
                    return lookup[feature.get('landschapselement')];
                }
                }),

                new ol.layer.Vector({
                title: 'EVZ Croy',
                source: new ol.source.GeoJSON(
                            /** @type {olx.source.GeoJSONOptions} */ ({
                              object: EVZCroy,
                              projection: 'EPSG:3857'
                        })),
                style: function(feature, resolution) {
                    return lookup[feature.get('landschapselement')];
                }
                }),

                new ol.layer.Vector({
                title: 'Natuurcompensatie Gasselsbroek',
                source: new ol.source.GeoJSON(
                            /** @type {olx.source.GeoJSONOptions} */ ({
                              object: NatuurcompensatieGasselsbroek,
                              projection: 'EPSG:3857'
                        })),
                style: function(feature, resolution) {
                    return lookup[feature.get('landschapselement')];
                }
                }),

                new ol.layer.Vector({
                title: 'Ebben',
                source: new ol.source.GeoJSON(
                            /** @type {olx.source.GeoJSONOptions} */ ({
                              object: Ebben,
                              projection: 'EPSG:3857'
                        })),
                style: function(feature, resolution) {
                    return lookup[feature.get('landschapselement')];
                }
                }),

                new ol.layer.Vector({
                title: 'Zionsburg',
                source: new ol.source.GeoJSON(
                            /** @type {olx.source.GeoJSONOptions} */ ({
                              object: Zionsburg,
                              projection: 'EPSG:3857'
                        })),
                style: function(feature, resolution) {
                    return lookup[feature.get('landschapselement')];
                }
                })


            ]
})
现在我想通过某种方式循环projecten变量,逐个循环其层,获得每个要素层的范围,并在到达最后一层时停止。然后我想放大到这个组合范围

这是我的基本设置(我不擅长javascript和循环):

projecten.getLayers()
对于(变量i=0,ii=layers.length;i

关于如何让这项工作发挥作用,您有什么想法吗?

您应该能够做到这一点:

var extent=ol.extent.createEmpty();
projecten.getLayers().forEach(函数(层){
extend(extent,layer.getSource().getExtent());
});
map.getView().fittentext(extent,map.getSize());
使用该函数初始化扩展数据块。然后在图层集合中循环,并使用生成包含所有矢量源中所有要素的范围。最后,将地图视图调整到此范围

这里有几件事需要注意。该方法返回一组层。这类似于常规JavaScript
数组
,只是它是可观察的。您可以使用该方法迭代集合中的每个层

还请注意,您应该调用以获取源中当前加载的所有功能的范围


最后,上面的链接与3.5.0及以上版本相关。您需要调整代码以使用
ol.source.Vector
对象,而不是实验性(现在已删除)的
ol.source.GeoJSON
对象。有关升级到新vector API的详细信息,请参阅。

我不太了解区段,无法创建答案,但我认为在循环中,可以使用ol.extent.getBottomLeft和ol.extent.getTopRight作为层区段。存储左下角的最小值和右上角的最大值,并使用这些值创建新的数据块。如何创建?你能试一试吗?不知何故,我无法将对象加载到新的ol.source.vector中?
new ol.layer.vector({title:'Natuurcompensatie gasselbroek',source:new ol.source.vector({url:natuurcompensatiegassbroek,format:new ol.format.georjson()),style:function(feature,resolution){return lookup[feature.get('landschapselement')];}},
我也尝试过
对象:NatuurCompensatiegassebroek
从3.8.0开始应该是
map.getView().fit(extent,map.getSize());
my vector\u layer.getSource().getExtent())如果图层不可见,将返回无穷大,这意味着我们在添加到地图时为该矢量图层设置了一些最大分辨率。有解决方案吗?
projecten.getLayers()
     for (var i = 0, ii = layers.length; i < ii; ++i) {
         layer = layers[i];
         ol.extent.boundingExtend(extent, layer.getBounds());
     }
    map.getView().fitExtent(extent,map.getSize());