Маркеры Mapbox мигают при использовании `icon-allow-overlap` - PullRequest
1 голос
/ 25 марта 2019

У меня есть карта, которая использует 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);
  });
...