OPENLAYERS 6如何获取几个kml文件的边界

OPENLAYERS 6如何获取几个kml文件的边界,openlayers,openlayers-6,Openlayers,Openlayers 6,如何获得几个kml文件的边界? 我可以轻松获得一个kml文件,但我有点迷路了。。。要获取地图中所有kml文件的边界 下面是代码(在php文件上下文中编写) 首先,我定义了所需的kml文件以及源和层的js变量(即:src_expe_pro0 expe_pro0…) 后来我把它放在地图上(因此$layers\u pro\u kml可以是一个或多个层) 雾来了。。。 现在,我只是使用这个方法来计算第一个kml层的边界 expe_pro0.once("change", function(e){

如何获得几个kml文件的边界? 我可以轻松获得一个kml文件,但我有点迷路了。。。要获取地图中所有kml文件的边界

下面是代码(在php文件上下文中编写)

首先,我定义了所需的kml文件以及源和层的js变量(即:src_expe_pro0 expe_pro0…)

后来我把它放在地图上(因此$layers\u pro\u kml可以是一个或多个层)

雾来了。。。 现在,我只是使用这个方法来计算第一个kml层的边界

   expe_pro0.once("change", function(e){
      var extension = src_expe_pro0.getExtent();
      map.getView().fit(extension);
   });

所以事实上,问题是如何使用数组(扩展)来减少一个数组,我们将给我所有kml层的边界? api中有函数吗,或者我必须使用数组吗??或者一个简单的方法

有什么建议吗

谢谢

在迈克(谢谢)的建议下,我完美地使用了它和它的作品

      var extension = ol.extent.createEmpty();
      map.getLayers().forEach(function(layer){
         if(!layer.values_.id) {
            layer.once("change", function(e){
               ol.extent.extend(extension, layer.getSource().getExtent());
               map.getView().fit(extension);
            });
         }
      });

试试这样的。源可能以任何顺序加载,因此在每次加载时重新拟合最简单

     // before opening map set listeners for vectors loading
     // and use extents to fit the map
     var extension = ol.extent.createEmpty();
     [
        fond_carte,
        '.$layers_pro_kml.'
        expe_markers
     ].forEach(function(layer) {
       if (layer.getSource().getExtent) {
         layer.getSource().on("addfeature", function(e){
           ol.extent.extend(extension, layer.getSource().getExtent());
           map.getView().fit(extension);
         });
       }
     });
     // then open the map to load the vectors
     map.setView(
       new ol.View({
         center: [0,0],
         zoom: 0
       })
     );

谢谢,但是我得到了TypeError:layer.getSource()。getExtent不是一个函数。(在'layer.getSource().getExtent()'中,'layer.getSource().getExtent'未定义)您是否只包括向量层?您只对向量感兴趣,以便可以限制列表或添加测试以查看源是否支持getExtent().yes i使用OSM层
if(layer.getSource().getExtent)的值的id对条件进行三次查询{
将其限制为支持
getExtent()
      var extension = ol.extent.createEmpty();
      map.getLayers().forEach(function(layer){
         if(!layer.values_.id) {
            layer.once("change", function(e){
               ol.extent.extend(extension, layer.getSource().getExtent());
               map.getView().fit(extension);
            });
         }
      });
     // before opening map set listeners for vectors loading
     // and use extents to fit the map
     var extension = ol.extent.createEmpty();
     [
        fond_carte,
        '.$layers_pro_kml.'
        expe_markers
     ].forEach(function(layer) {
       if (layer.getSource().getExtent) {
         layer.getSource().on("addfeature", function(e){
           ol.extent.extend(extension, layer.getSource().getExtent());
           map.getView().fit(extension);
         });
       }
     });
     // then open the map to load the vectors
     map.setView(
       new ol.View({
         center: [0,0],
         zoom: 0
       })
     );