8

我的 django web 应用程序应该执行以下操作:将 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()-click....

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

注意:我不想使用类似的东西,bindPopup(feature.properties.popupContent)因为我想打开一个新窗口,该窗口使用数据库中的一些额外数据调用不同的 django 视图。

4

2 回答 2

14

对于每个有类似问题的人:您要使用的是onEachFeature功能。该特征表示一个 geojson 对象。使用上面提供的示例数据,可以通过 访问 id feature.properties.popupContent

function onEachFeature(feature, layer) {
    layer.on('click', function (e) {
        alert(feature.properties.popupContent);
        //or
        alert(feature.properties.id);
    });
}
于 2013-03-30T07:11:10.760 回答
2

在尝试了上面发布的解决方案但没有成功后,我得到了这个版本:

function onEachFeature(feature, layer) {
    layer.on('click', function (e) {
        alert(e.target.feature.properties.popupContent);
        //or
        alert(e.target.feature.properties.id);
    });
}
于 2015-01-07T16:57:05.157 回答