Добавить группы слоев на карту и обновить по имени - PullRequest
0 голосов
/ 21 сентября 2018

В настоящее время я использую ngx-leaflet 4.0.0 с Angular 6.x и RXjs 6.x.У меня есть куча наблюдаемых, которые генерируют / поток слоев, которые должны быть нарисованы на карте.

Когда у нас много маркеров, то, как вы могли ожидать, производительность ухудшается.Это, вероятно, связано с тем, что я в основном объединяю все маркеры в один отдельный массив, который я передаю leafletLayers.

В идеале я добавляю, удаляю или обновляю только одну группу слоев, используя ее имя.К сожалению, я не знаю, как использовать LayerGroups, как предлагается в качестве одного из двух улучшений производительности при работе с большим количеством маркеров.Я хочу использовать структуру данных, как вы видите ниже, если это возможно?

blueLayerGroup: L.LayerGroup
redLayerGroup: L.LayerGroup

{
   "BlueShips": blueLayerGroup,
   "RedShips": redLayerGroup    
}

Я не использую leafletMapControl, у нас есть собственный пользовательский интерфейс для выбора слоев.

1 Ответ

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

Если вы хотите попробовать использовать layerGroups, вы можете попытаться эмулировать следующий подход:

В вашем компоненте просто есть две группы слоев, которые вы добавляете в массив листов листовки:

redLayerGroup = L.layerGroup();
blueLayerGroup = L.layerGroup();
layers = [ blueLayerGroup, redLayerGroup ];

Затем вы просто добавляете слои в группы слоев или удаляете их по мере необходимости:

addLayerToLayerGroup(layer: L.Layer, layerGroup: L.LayerGroup) {
  layerGroup.addLayer(layer);
}

removeLayerFromLayerGroup(layer: L.Layer, layerGroup: L.LayerGroup) {
  layerGroup.removeLayer(layer);
}

Этот подход не использует ngx-листовку для синхронизации маркеров.Ngx-листовка обрабатывает только сами группы слоев (если они добавлены или удалены из массива слоев).

Это может решить, а может и не решить вашу проблему с производительностью.Я всегда находил, что более двух сотен маркеров заставили Leaflet замедлиться в целом.Если это работает для вас, есть плагин Leaflet.markercluster для ngx-leaflet .Это помогает уменьшить общее количество маркеров, фактически отображаемых на карте, в любое время, чтобы повысить производительность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...