GOOGLE ADS

среда, 27 апреля 2022 г.

фильтрация листовок по категориям идентификаторов слоев

Я адаптировал этот код для создания массивов тегов категорий - я хочу взять каждую группу 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))
}
})

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...