2014-09-05 62 views
0

我創建了一個用於將GEOJson文件加載到小冊子地圖上的JavaScript模板。這些文件可以是拼圖,多元多邊形,標記,圖標等。我有的問題是我將如何能夠fitBounds所有這些文件?當我現在調用fitBounds時,只有第一個文件被使用,其餘的被忽略。使用LEaflet將多個geoJSon文件查看到視圖中

我基本上做的是在我的主要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隻影響第一個。有人有主意嗎?

如果有人感到困惑,我可以給更多的細節......

回答

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 
} 
相關問題