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