У меня есть карта, которая использует mapboxgl-js, чтобы скрыть или показать маркеры карты на основе некоторых критериев.
Скрытие маркеров работает должным образом, но когда я хочу, чтобы маркеры снова показывались, они мигают в течение нескольких миллисекунд, а затем снова исчезают, пока карта скрывает метки (названия улиц и т. Д.) На нижележащем слое, прежде чем они появятсяснова.
Посмотрите это видео: https://streamable.com/debcp
Посмотрите этот код: https://codepen.io/jakobfuchs/details/VRRgJO
Я пришел к выводу, что это вызвано установкой 'icon-allow-overlap': true
наслой символа маркера.
Какие-либо предложения, как мне сохранить эту настройку и избежать мигания?
Странно то, что это происходит не в 100% случаев, а в ~ 95% случаев..
Примеры кода:
Слой маркера:
map.addLayer({
id: 'property-layer',
type: 'symbol',
source: 'properties',
filter: ['!has', 'point_count'],
layout: {
'symbol-placement': 'point',
'icon-image': 'marker',
'icon-size': 1,
'icon-anchor': 'bottom',
'icon-allow-overlap': true,
}
});
Код фильтра:
const filterToggle = document.getElementById('filterToggle');
filterToggle.addEventListener('change', function(e) {
if (openPopup) {
openPopup.remove();
openPopup = '';
}
let properties;
if (this.checked) {
properties = {
type: "FeatureCollection",
features: features.features.filter((property) => property.properties.availability === 'Available')
}
} else {
properties = features;
}
map.getSource('properties').setData(properties);
});