リーフレット クラスター プラグインを使用して、多数のクラッシュをマップしています。ページをロードすると、すべてのクラッシュがマッピングされます (GeoJSON ファイルに保存されます)。また、年ごとに異なる geoJSON ファイルを読み込むボタンもあります。
私が直面している問題は、 removeLayer() が実際にレイヤーを削除していないことです。そのため、新しい GeoJSON ファイルを再マップすると、すべてのクラッシュが積み重なっていくだけです。
これらは、ボタンをクリックすると起動する 2 つの関数です。以下に示すように、 var マーカーはグローバル名前空間で定義されていますか (これは問題の一部である可能性があります)。
var markers = L.markerClusterGroup({spiderfyDistanceMultiplier: 1.3});
//Lay new data on map
function buildMarkers(yearData){
var crashLayer = new L.geoJson(yearData, {
onEachFeature: function (feature, layer) {
layer.bindPopup(feature.properties.year);
}
});
markers.addLayer(crashLayer);
map.addLayer(markers);
}
//Remove ALL data on map
function removeClusters(){
map.removeLayer(markers)
}
//AN example of a button
$("#twelve").click(function(e){
e.preventDefault();
$('a').removeClass('selected');
$(this).addClass('selected');
removeClusters();
buildMarkers(twelveCrashes);
});