@@ -101,6 +101,7 @@ export class ClusteredAnatomicalMarkerLayer
101101 #map: MapLibreMap
102102 #mapTermGraph: MapTermGraph
103103 #markerTerms: Map < string , Set < string > > = new Map ( )
104+ #markerTermsByZoomTerm: Map < string , Set < string > [ ] > = new Map ( )
104105 #multiScaleByZoomTerm: Map < string , boolean [ ] > = new Map ( )
105106 #maxZoom: number
106107 #points: GeoJSON . FeatureCollection = {
@@ -230,23 +231,39 @@ export class ClusteredAnatomicalMarkerLayer
230231 for ( const cluster of clusteredSet . clusters ) {
231232 let zoomDatasets = this . #datasetsByZoomTerm. get ( cluster . term )
232233 let zoomMultiscale = this . #multiScaleByZoomTerm. get ( cluster . term )
234+ let zoomMarkerTerms = this . #markerTermsByZoomTerm. get ( cluster . term )
233235 if ( ! zoomDatasets ) {
234236 zoomDatasets = [ ]
235237 zoomMultiscale = [ ]
238+ zoomMarkerTerms = [ ]
236239 for ( let n = 0 ; n <= MAX_MARKER_ZOOM ; n += 1 ) {
237240 zoomDatasets . push ( new Set < string > ( ) )
238241 zoomMultiscale . push ( false )
242+ zoomMarkerTerms . push ( new Set < string > ( ) )
239243 }
240244 this . #datasetsByZoomTerm. set ( cluster . term , zoomDatasets )
241245 this . #multiScaleByZoomTerm. set ( cluster . term , zoomMultiscale )
246+ this . #markerTermsByZoomTerm. set ( cluster . term , zoomMarkerTerms )
242247 }
243248 for ( let zoom = cluster . minZoom ; zoom < cluster . maxZoom ; zoom += 1 ) {
244249 zoomDatasets [ zoom ] . add ( cluster . datasetId )
245250 zoomMultiscale ! [ zoom ] ||= ( this . #kindByDataset. get ( cluster . datasetId ) === 'multiscale' )
251+ const descendents = clusteredSet . descendents . get ( cluster . term )
252+ if ( descendents ) {
253+ for ( const descendent of descendents . values ( ) ) {
254+ zoomMarkerTerms [ zoom ] . add ( descendent )
255+ }
256+ }
246257 }
247258 if ( cluster . maxZoom === MAX_MARKER_ZOOM ) {
248259 zoomDatasets [ MAX_MARKER_ZOOM ] . add ( cluster . datasetId )
249260 zoomMultiscale ! [ MAX_MARKER_ZOOM ] ||= ( this . #kindByDataset. get ( cluster . datasetId ) === 'multiscale' )
261+ const descendents = clusteredSet . descendents . get ( cluster . term )
262+ if ( descendents ) {
263+ for ( const descendent of descendents . values ( ) ) {
264+ zoomMarkerTerms [ MAX_MARKER_ZOOM ] . add ( descendent )
265+ }
266+ }
250267 let datasetFeatureIds = this . #datasetFeatureIds. get ( cluster . datasetId )
251268 if ( ! datasetFeatureIds ) {
252269 datasetFeatureIds = new Set ( )
0 commit comments