JS传单:如何(地理)JSON ID传递给上单击事件?(JS leaflet: How to pas

2019-08-18 06:29发布

我的Django的web应用程序应该做到以下几点:传递一个GeoJSON的对象视图,地图单张点,并在用户点击一个点标记显示一些额外的信息。 我不太熟悉,所以JS我被困绑定正确的数据来click事件。 下面是一个示例GeoJSON的对象。 我怎样才能访问“ID”与我的click事件?

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视图的新窗口。

Answer 1:

对于大家都用了类似的问题:你想用什么onEachFeature功能。 该特征表示GeoJSON的对象。 使用ID上面提供的采样数据可通过访问feature.properties.popupContent

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


Answer 2:

想上面贴没有成功的解决方案后,我得到了这个版本的工作:

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


文章来源: JS leaflet: How to pass (Geo-)json ID to on click event?