使用LEaflet将多个geoJSon文件查看到视图中

view multiple geoJSon files into view using LEaflet

本文关键字:视图 文件 geoJSon LEaflet 使用      更新时间:2023-09-26

我创建了一个javascript模板,用于将GEOJson文件加载到传单地图上。这些文件可以是ploygons、multypelygons、标记、图标等。我的问题是如何适应所有这些文件?当我现在调用fitBounds时,只使用第一个文件,而忽略其余文件。

我基本上要做的是在我的主HTML/JavaScript文件中,我只需要给出一个文件名和一个我想作为覆盖的名称,可能有一个或多个。在我的模板javascript中,我使用加载所有这些文件

    var myStuff = L.geoJson(data,
              {
                style:mystyle},
              OnEachFeature, pointToLoayer
              //more complex but just to give a better understanding...
               });
                myStuff.addTo(map);
                map.fitBounds(myStuff);

除了fitBounds部分,我尝试做的所有事情都有效。"数据"是我正在加载的文件,但fitBounds只影响第一个。有人有什么想法吗?

如果有人感到困惑,我可以提供更多细节。。。

首先,您的代码中有一个错误:fitBounds采用L.LatLngBounds参数

所以你的代码应该是:

map.fitBounds(myStuff.getBounds());

如果您想使用fitBounds,您只能有一个GeoJSON层

但是,您可以将数据添加到您的层

var myStuff = L.geoJson(data1);
myStuff.addData(data2);
myStuff.addData(data3);
myStuff.addTo(map);
map.fitBounds(myStuff.getBounds());

如果你绝对想保留很多层,你必须自己计算边界矩形。。

var myStuff1 = L.geoJson(data1);
var bounds1 = myStuff1.getBounds();
var myStuff2 = L.geoJson(data2);
var bounds2 = myStuff2.getBounds();
myStuff.addTo(map);
map.fitBounds(bestBounds(bounds1, bounds2));
function bestBounds(bounds1, bounds2) {
// clever computation to get west,east,north,south
}