jim*_*age 5 javascript jquery leaflet topojson
我正在尝试使用leaflet和topojson图层创建交互式地图.我想做以下事情:
1-当单击某个topojson多边形时,它应该被删除.
2-当单击另一个多边形时,应该将其删除,并且应该添加先前单击的多边形.
所以基本上一直只有一个多边形不存在.这是地图的代码块:
function addRegions(map) {
var regionLayer = new L.TopoJSON();
$.getJSON('map-developmentregions.topo.json').done(addRegionData);
function addRegionData(topoData){
regionLayer.addData(topoData);
regionLayer.addTo(map);
regionLayer.eachLayer(handleLayer);
}
function handleLayer(layer) {
layer.setStyle({
fillColor : getColor(getNewsCount(layer.feature.properties.REGION)),
weight: 2,
opacity: 1,
color: 'white',
fillOpacity: 1
});
layer.on({
mouseover : enterLayer,
mouseout: leaveLayer,
click: clickAction
});
}
//Here's the code for clickAction... this is where I suppose the code should be placed
function clickAction(e) {
var layer = e.target;
map.removeLayer(layer);
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,这段代码允许我点击topojson多边形来删除它,但是一旦点击了另一个多边形,我就无法想到如何检索先前删除的多边形.
我想我应该将每个多边形与多边形的总数进行比较,并在删除当前单击的多边形之前添加缺少的多边形,但我无法执行该多边形.
请帮忙.谢谢
在您的clickAction()函数中,迭代数据层并将每个功能添加到地图中。完成后,删除当前功能。
所以,你的点击功能将变成
function clickAction(e) {
regionLayer.eachLayer(function(layer){
map.addLayer(layer)
});
var layer = e.target;
map.removeLayer(layer);
}
Run Code Online (Sandbox Code Playgroud)
注意:确保将变量regionLayer范围更改为全局变量,以便可以在单击函数中访问它。
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |