我的django网络应用应该执行以下操作:将Geojson对象传递到视图,使用传单映射点,并在用户单击点标记时显示一些其他信息。我对js不是那么熟悉所以我被绑定了正确类型的数据到click
事件。这是一个geojson对象示例。如何使用click
事件访问“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()
- 点击....
gj.on('click', function(evt) {
alert(id) // well, this is where I need help
});
注意:我不想使用类似bindPopup(feature.properties.popupContent)
的内容,因为我想打开一个新窗口,使用数据库中的一些额外数据调用不同的django视图。
答案 0 :(得分:14)
对于遇到类似问题的每个人:您要使用的是onEachFeature
功能。该功能表示geojson对象。使用上面提供的示例数据,可以通过feature.properties.popupContent
访问ID。
function onEachFeature(feature, layer) {
layer.on('click', function (e) {
alert(feature.properties.popupContent);
//or
alert(feature.properties.id);
});
}
答案 1 :(得分:2)
尝试上面发布的解决方案后没有成功,我得到了这个版本的工作:
function onEachFeature(feature, layer) {
layer.on('click', function (e) {
alert(e.target.feature.properties.popupContent);
//or
alert(e.target.feature.properties.id);
});
}