Чистый способ уничтожить Mapbox FeatureCollections без потери слоев и источников? - PullRequest
0 голосов
/ 29 марта 2019

Я инициализирую карту mapbox, добавляя источники и связанные с ними слои.

    mapbox.addSource(MY_SOURCE, {
        'type': 'geojson',
        'data': {
            'type': 'FeatureCollection',
            'features': [],
        },
    });

    mapbox.addLayer({
        'id': MY_LAYER,
        'type': 'circle',
        'source': MY_SOURCE,
        'paint': {
            'circle-radius': 6,
            'circle-color': '#d31467',
        },
    });

моя цель - я хочу, чтобы эти определения делались один раз, а затем - если мне нужно обновить источник, я просто:

    mapbox.getSource(MY_SOURCE).setData(geojson);

Иногда, хотя мне нужно уничтожить все полигоны, все точки, все. Как я могу сделать это без потери всех этих определений? Я могу видеть только .removeSource, .removeLayer - что говорит мне, что мне действительно нужно будет воссоздать эти определения.

Есть ли менее разрушительный способ сделать это?

1 Ответ

2 голосов
/ 30 марта 2019

У вас есть два варианта:

  1. Скрыть слои

    map.setLayoutProperty(<layer-id>, 'visibility', 'none');
    
  2. Удалите все функции из ваших источников, установив пустой геойсон

    map.getSource(<source-id>).setData({
      type: 'FeatureCollection',
      features: []  // <--- no features
    });
    

Также удаление и повторное добавление источников и слоев может быть не самым плохим вариантом, в зависимости от частоты, с которой вы хотите это сделать.

...