Skip to content

Commit e04403e

Browse files
committed
Marker terms need to be generated based on zoom level
1 parent 5581e2a commit e04403e

1 file changed

Lines changed: 17 additions & 0 deletions

File tree

src/layers/acluster.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)