Низкая производительность при открытии большого количества всплывающих подсказок с помощью Leaflet - PullRequest
0 голосов
/ 27 июня 2018

Цель состоит в том, чтобы отобразить около 3000 всплывающих подсказок, когда пользователь устанавливает флажок в контрольном слое.

В данный момент я привязываю каждую подсказку к объекту слоя geoJSON во время инициализации. Я слушаю события добавления и удаления и соответственно открываю и закрываю подсказку. Однако отображение всех всплывающих подсказок занимает около 20 секунд.

Фрагмент кода выглядит следующим образом:

function bind_tooltip(layer,val){
layer.bindTooltip(val.toString(), {permanent: true, direction: 'top'});
layer
    .on('remove', function(){layer.closeTooltip();})
    .on('add', function(){layer.openTooltip();});
}

Может ли кто-нибудь предложить мне лучший способ решения этой проблемы? Спасибо!

1 Ответ

0 голосов
/ 24 сентября 2018

Профилировав код для моего варианта использования, я понял, что для вычисления tooltipWidth и tooltipHeight внутри Tooltip._setPosition() функции исходного кода требуется значительное количество совокупного времени (для большого количества всплывающих подсказок).

Я переопределил функцию _setPosition(), используя L.class.include() для жесткого кодирования значений для tooltipWidth и tooltipHeight и установил direction = 'right'. Хотя это, вероятно, не лучшее решение, оно значительно улучшило скорость.

Если есть лучшее решение, пожалуйста, поделитесь им. Спасибо!

...