gribnoysup / react-yandex-maps

Yandex Maps API bindings for React
MIT License
327 stars 116 forks source link

Кластеры в ObjectManager #260

Closed vyudrozd closed 3 years ago

vyudrozd commented 3 years ago

Я использую кластеризацию через ObjectManager:

<ObjectManager
    instanceRef={obj => (objectManagerRef.current = obj)}
    options={{
        clusterize: true,
        gridSize: 32,
        }}
    objects={{
        preset: 'islands#greenDotIcon',
        }}
    clusters={{
        preset: 'islands#greenClusterIcons',
        }}
        features={data}
        onClick={handleClick}
    />

В данном примере, data - это данные загружаемые с сервера. На странице, где я использую Manager, есть фильтры, которые контролирует массив data, который подгружается с сервера. Проблема происходит на этапе, когда я начинаю переключать фильтры и, соответсвенно, менять data: кластеры, которые генерирует Manager записывают не только данные, которые находятся в данный момент в data, а также и старые данные. Таким образом число данных в кластерах растет. Кроме того, некоторые кластеры появляются из ничего по тому же принципу. Пример до включения и выключения фильтра и после: Снимок экрана 2020-09-14 в 12 17 45 Снимок экрана 2020-09-14 в 12 19 18

Пробовал решать эту проблему используя фильтры в самом Manager, а также фильтруя данные локально, однако данные решения ломали карту еще больше. Можно ли решить данную проблему используя ObjectManager?

mmarkelov commented 3 years ago

@vyudrozd сложно помочь Вам без кода. Если есть возможность, то пример вашего кода на codesandbox очень бы помог

vyudrozd commented 3 years ago

Проблема была не в библиотеке, а в моем неполном понимании устройства карты, с сервера приходили точки с одинаковыми id. Разобрался пока пытался написать код на codesandbox