2016-04-06 18 views
1

我將外部json添加到傳單層。當我點擊geojson形狀/多邊形時,我想要返回geojson字符串。我該怎麼做呢?我有一個對圖層的引用,但是我沒有看到如何使用屬性取回geojson。如何將geojson對象添加到傳單中?

var layer = e.layer; 

回答

0

使用var將使當地單擊處理函數內聲明layer,所以您將無法訪問它的點擊處理程序之外。如果要全局訪問layer,則需要聲明它爲global variable,可以先聲明它在函數外部,或者在沒有var的函數內聲明它。下面的代碼使用後者的方法創建兩個全局變量,一個與該層的GeoJSON的一個對象,一個與以GeoJSON作爲字符串:

layer.on('click', function() { 
    objectOut = layer.toGeoJSON(); 
    textOut = JSON.stringify(objectOut); 
}); 

如果您有其他程序可能會嘗試之前訪問這些變量點擊一個功能,您可能需要首先在點擊處理程序之外聲明它們(例如,var textOut = 'nothing clicked'等)。下面是一個使用這個方法的例子小提琴:「在函數內部聲明(一VAR)無(使用關鍵字)VAR」

http://fiddle.jshell.net/nathansnider/pgk26r6n/

+0

請不要這樣做。沒有明確地確定你的變量的範圍是字面上你可以在JS中做的最糟糕的事情之一,並且可能導致各種錯誤。這是代碼評論中表翻轉的第二個原因,而第一個原因是因爲JS嚴重訪談失敗(開玩笑,而不是開玩笑)。 – technicolorenvy