我创建了一个javascript模板,用于将GEOJson文件加载到传单地图上。文件可以是ploygons,multypolygons,marker,icons等。我的问题是我如何能够fitBounds所有这些文件?当我调用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只影响第一个。有人有主意吗?
如果有人感到困惑,我可以提供更多细节......
答案 0 :(得分:1)
首先,代码中存在错误: 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
}