layer - openlayers 3 zoom to combined extent -


i'm using openlayers 3 create map vector features on top. far, good.

i have several vector layers, grouped in variable called 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')];                 }                 })               ] }) 

now want somehow loop through projecten variables, loop through layers 1 one, extent of each feature layer, , stop when last layer has been reached. want zoom combined extent.

this basic setup (i'm not javascript , loops):

projecten.getlayers()      (var = 0, ii = layers.length; < ii; ++i) {          layer = layers[i];          ol.extent.boundingextend(extent, layer.getbounds());      }     map.getview().fitextent(extent,map.getsize()); 

any ideas on how can work?

you should able this:

var extent = ol.extent.createempty(); projecten.getlayers().foreach(function(layer) {   ol.extent.extend(extent, layer.getsource().getextent()); }); map.getview().fitextent(extent, map.getsize()); 

use ol.extent.createempty() function initialize extent. loop through collection of layers , use ol.extent.extend() generate extent includes features in of vector sources. finally, fit map view extent.

there few things note here. group.getlayers() method returns ol.collection of layers. similar regular javascript array except observable. can use collection.foreach() method iterate through each layer in collection.

also note should call source.getextent() extent of loaded features in source.

finally, links above relevant 3.5.0 release , above. you'll need adapt code work ol.source.vector objects instead of experimental (and removed) ol.source.geojson objects. see 3.5.0 release notes details on upgrading new vector api.


Comments