Mapbox GL JS .setData () l oop оптимизация производительности - PullRequest
0 голосов
/ 17 апреля 2020

enter image description here enter image description here enter image description here Каждые 50 миллисекунд я получаю обновление от сервера, а затем обновляю данные точки в моем Mapbox GL JS вот так:

    map
      .getSource('pointsSource')
      .setData(pointsData);

Драма начинается, когда я обнаруживаю, что мой ноутбук работает в турбо-режиме и использует 200% процессора, тогда как там, где я не делаю .setData() ( не обновляет данные, а только отображает карту) он работает, используя 25%.

В любой момент времени я обновляю только 25 пунктов. Как я могу улучшить производительность, учитывая, что она связана не с количеством очков, а с тем, что я делаю .setData() очень быстро? Я думаю так, потому что я проводил эксперименты с 1 точкой или 10000 , и результат тот же (200% CPU).

1 Ответ

0 голосов
/ 17 апреля 2020

Я не думаю, что setData предназначен для того, чтобы называться так часто. Если вам не нужно перемещать геометрию (только атрибуты), вы можете вместо этого использовать setFeatureState.

В качестве альтернативы, по крайней мере, чтобы остановить блокировку окна, вы можете подождать, пока idle событие перед звонком setData().

...