单击新多边形检索已删除的 TOPOJSON 多边形
Retrieving removed TOPOJSON polygon on clicking a new one
我正在尝试使用 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);
}
}
到目前为止,此代码允许我单击 topojson 多边形将其删除,但我想不出如何在单击另一个多边形后检索先前删除的多边形。
我想我应该将每个多边形与多边形总数进行比较,并在删除当前单击的多边形之前添加缺失的多边形,但我无法执行该操作。
请帮忙。谢谢
在您的clickAction()
函数中,迭代您的数据层并添加要映射的每个特征。完成后,删除当前功能。
所以,你的点击函数会变成
function clickAction(e) {
regionLayer.eachLayer(function(layer){
map.addLayer(layer)
});
var layer = e.target;
map.removeLayer(layer);
}
注意:确保将您的变量 regionLayer
范围更改为全局变量,以便在您的点击函数中可以访问它。
我正在尝试使用 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);
}
}
到目前为止,此代码允许我单击 topojson 多边形将其删除,但我想不出如何在单击另一个多边形后检索先前删除的多边形。
我想我应该将每个多边形与多边形总数进行比较,并在删除当前单击的多边形之前添加缺失的多边形,但我无法执行该操作。
请帮忙。谢谢
在您的clickAction()
函数中,迭代您的数据层并添加要映射的每个特征。完成后,删除当前功能。
所以,你的点击函数会变成
function clickAction(e) {
regionLayer.eachLayer(function(layer){
map.addLayer(layer)
});
var layer = e.target;
map.removeLayer(layer);
}
注意:确保将您的变量 regionLayer
范围更改为全局变量,以便在您的点击函数中可以访问它。