2013-03-29 57 views
6

我的django web應用程序應該執行以下操作:將Geojson對象傳遞給視圖,使用傳單映射點並在用戶單擊點標記時顯示一些附加信息。我對js不太熟悉,所以我被卡住了正確的數據到click事件。這是一個示例geojson對象。我如何通過我的click活動訪問'id'?JS小冊子:如何將(Geo-)json ID傳遞給點擊事件?

var geojsonFeature = {'geometry': 
          {'type': 'MultiPoint', 
          'coordinates': [[4.939, 52.33], [4.9409, 52.33]] 
          }, 
        'type': 'Feature', 
        'properties': 
         {'id': '52','popupContent': 'id=52'} 
        }; 

添加GeoJSON的對象到地圖..

var gj = L.geoJson(geojsonFeature, { 
    pointToLayer: function (feature, latlng) { 
    return L.circleMarker(latlng, geojsonMarkerOptions); 
    }}).addTo(map); 

而且on() -click ....

gj.on('click', function(evt) { 
    alert(id) // well, this is where I need help 
}); 

注:我不想使用類似bindPopup(feature.properties.popupContent),因爲我想打開一個新的窗口,用一些額外的數據從數據庫中調用不同的django視圖。

回答

13

給大家一個類似的問題:你想用什麼onEachFeature功能。該功能代表一個geojson對象。使用上面提供的樣本數據可以通過feature.properties.popupContent訪問。

function onEachFeature(feature, layer) { 
    layer.on('click', function (e) { 
     alert(feature.properties.popupContent); 
     //or 
     alert(feature.properties.id); 
    }); 
} 
+0

愛你哥們具有搜索一個晚上後,我得到了這個答案。 –

2

試圖上面貼沒有成功的解決方案後,我得到了這個版本的工作:

function onEachFeature(feature, layer) { 
    layer.on('click', function (e) { 
     alert(e.target.feature.properties.popupContent); 
     //or 
     alert(e.target.feature.properties.id); 
    }); 
}