У меня есть один массив мест, которые я отображаю в таблице, а также в карте.Я показываю маркер и один из круга или многоугольника для каждого элемента в таблице.Когда я выбираю муравей элемент из таблицы маркер значок меняется для этого конкретного элемента.У меня также есть один ползунок, чтобы изменить радиус кругов для каждого элемента.Все это происходит успешно, но я хочу разделить слой маркера, круга и многоугольника по отдельности, а затем сгруппировать их с помощью layerGroup, чтобы при изменении радиуса я обновлял только слой круга (сейчас мне нужно сбросить слой и обновить маркер, многоугольник и круг),Точно так же, если я выбираю какой-либо элемент в таблице, мне нужно обновить только маркерный слой, а не все три.Я попытался сгруппировать слои следующим образом:
updateLayers(layerData) {
this.marker = [];
for (const ld of layerData) {
this.marker.push(
marker([ld['latitude'], ld['longitude']], {
icon: icon({
iconSize: [20, 32],
iconAnchor: [10, 16],
iconUrl: this.selectedPlaces.indexOf(ld) !== -1 ? this.iconEnablelink : this.iconDisableLink
})
}),
// ld['geofence_type'] && ld['geofence_type'] == 'POLYGON' ? polygon([ld['geofence']['coordinates'][0][0]]) : circle([ld['latitude'], ld['longitude']], { radius: this.radius }),
);
}
console.log('lg', layerGroup([this.marker]));
this.layers = layerGroup([this.marker]);
}
Ответ выглядит следующим образом:
options: {}
_initHooksCalled: true
_layers: {45: Array(25)}
__proto__: NewClass
Я получаю следующую ошибку: «Ошибка при попытке diff '[object Object]'.Разрешены только массивы и итерации "
. Есть ли способ реализовать это эффективно.
Редактировать: Ниже приведен рабочий код.Каждый раз, когда я нажимаю на флажок, я добавляю или удаляю этот элемент в selectedPlaces
.Тогда я вызываю эту функцию.Даже при смене слайдера мне приходится снова и снова вызывать эту функцию.Я использую маркер, многоугольник и ползунок в слоях, но я хочу разделить слои на три части, чтобы при выборе любого элемента я обновлял только маркер (если возможно, затем маркер для этого конкретного элемента), а не все круги и многоугольники.Если я обновлю радиус с помощью ползунка, я смогу обновлять только круги без изменения маркеров и полигонов.
updateLayers(layerData) {
this.layers = [];
for (const ld of layerData) {
this.layers.push(
marker([ld['latitude'], ld['longitude']], {
icon: icon({
iconSize: [20, 32],
iconAnchor: [10, 16],
iconUrl: this.selectedPlaces.indexOf(ld) !== -1 ? this.iconEnablelink : this.iconDisableLink
})
}),
ld['geofence_type'] && ld['geofence_type'] == 'POLYGON' ? polygon([ld['geofence']['coordinates'][0][0]]) : circle([ld['latitude'], ld['longitude']], { radius: this.radius }),
);
}