Я адаптировал этот код для создания массивов тегов категорий - я хочу взять каждую группу tagCategory, и если ее срез ссылки на метку соответствует какой-либо функции, - добавить ее как переменную по имени метки в список (для использования для фильтрации маркеров)
Вот мой код - адаптировано отсюда
let ind00ss00test = new L.layerGroup();
console.log(ind00ss00test)
let LR1test = new L.layerGroup()
const subGroups1 = [];
d3.json(mapsData, function(data){
industry = L.geoJSON(data, {
pointToLayer: function (feature){
return new L.circleMarker([feature.geometry.coordinates[1], feature.geometry.coordinates[0]], {
className: feature.properties.HASHcodePM,
radius: getRadius(feature.properties.size),
fillOpacity:0.8,
color: getColor(feature.properties.type),
fillColor: getColor(feature.properties.type),
weight: getRadius(feature.properties.size)/3,
})
},
onEachFeature: function(feature, layer) {
layer.bindPopup("Name: " + feature.properties.Name + "<br>Type: "+ feature.properties.type)
var HASHcode = feature.properties["HASHcodePM"];
var INDSShash = feature.properties.HASHcodePM.slice(0,9); //INDSS
var LRhash = feature.properties.HASHcodePM.slice(9,12); //LR
var tagCategories = subGroups1[HASHcode];
if (!tagCategories) {
tagCategories = subGroups1[HASHcode] = L.geoJson();
} tagCategories.addLayer(layer);
if (INDSShash == "IND00SS00") tagCategories.addTo(ind00ss00test);
if (LRhash == "LR1") tagCategories.addTo(LR1test);
},
})
});
Итак, я хочу взять метки, ссылающиеся на фрагменты меток -
И я хочу отфильтровать маркеры из слоев со свойством LR1 на «overlayremove»:
const content = L.layerGroup().addTo(myMap);
myMap.on('overlayadd overlayremove', () => {
if (myMap.hasLayer(ind00group)) {
ind00ss00test.addTo(content))
}
if (myMap.hasLayer(ind99group)) {
ind00ss99test.addTo(content))
}
if (!myMap.hasLayer(LR1Group)) {
LR1test.forEach(marker => content.removeLayer(marker))
}
})
Ind00ss00test можно добавить/удалить, но маркеры не фильтруются с помощью LR1test.forEach (мне просто нужно фильтровать маркеры из добавленных групп слоев, если LR1 не выбран.) Так что по существу - я хотел бы иметь возможность взять эти группы слоев и динамически добавлять их в качестве переменных в список на основе похожих функций, таких как этот, без необходимости вручную добавлять каждую группу слоев по имени.
Мы ценим любые предложения.
Решение проблемы
Ну я разобрался, если кому интересно. Сохраняя тот же код, что и выше, и заменяя эти переменные/параметры:
let lr1group = L.layerGroup()
let ind00ss00group = L.layerGroup()
let lr1List = [];
let ind00ss00List = [];
if (INDSShash =='IND00SS00' ) ind00ss00List.push(tagCategories);
if (LRhash == "LR1") lr1List.push(tagCategories);
const content = L.layerGroup().addTo(myMap);
// filter selection
myMap.on('overlayadd overlayremove', () => {
if (myMap.hasLayer(ind00ss00group)) {ind00ss00List.forEach(marker=> marker.addTo(content))
}
if (!myMap.hasLayer(ind00ss00group)) {ind00ss00List.forEach(marker => content.removeLayer(marker))
}
if (!myMap.hasLayer(lr1group)) {
lr1List.forEach(marker => content.removeLayer(marker))
}
})
Комментариев нет:
Отправить комментарий