Refactoring(maplibre): remove 'freshness' and 'name' from FeatureSource to simplify the code

This commit is contained in:
Pieter Vander Vennet 2023-03-23 01:42:47 +01:00
parent 1b3609b13f
commit 231d67361e
30 changed files with 161 additions and 269 deletions

View file

@ -53,11 +53,9 @@ export default class FullNodeDatabaseSource implements TileHierarchy<FeatureSour
src.ping()
}
}
const now = new Date()
const asGeojsonFeatures = Array.from(nodesById.values()).map((osmNode) => ({
feature: osmNode.asGeoJson(),
freshness: now,
}))
const asGeojsonFeatures = Array.from(nodesById.values()).map((osmNode) =>
osmNode.asGeoJson()
)
const featureSource = new SimpleFeatureSource(this.layer, tileId)
featureSource.features.setData(asGeojsonFeatures)

View file

@ -175,7 +175,7 @@ export default class OsmFeatureSource {
new PerLayerFeatureSourceSplitter(
this.filteredLayers,
this.handleTile,
StaticFeatureSource.fromGeojson(geojson.features),
new StaticFeatureSource(geojson.features),
{
tileIndex: index,
}

View file

@ -4,6 +4,7 @@ import FilteredLayer from "../../../Models/FilteredLayer"
import TileHierarchy from "./TileHierarchy"
import { Tiles } from "../../../Models/TileRange"
import { BBox } from "../../BBox"
import { Feature } from "geojson";
/**
* Contains all features in a tiled fashion.
@ -29,7 +30,7 @@ export default class TiledFeatureSource
public readonly maxFeatureCount: number
public readonly name
public readonly features: UIEventSource<{ feature: any; freshness: Date }[]>
public readonly features: UIEventSource<Feature[]>
public readonly containedIds: Store<Set<string>>
public readonly bbox: BBox
@ -80,7 +81,7 @@ export default class TiledFeatureSource
if (features === undefined) {
return undefined
}
return new Set(features.map((f) => f.feature.properties.id))
return new Set(features.map((f) => f.properties.id))
})
// We register this tile, but only when there is some data in it
@ -132,7 +133,7 @@ export default class TiledFeatureSource
* @param features
* @private
*/
private addFeatures(features: { feature: any; freshness: Date }[]) {
private addFeatures(features: Feature[]) {
if (features === undefined || features.length === 0) {
return
}
@ -180,7 +181,7 @@ export default class TiledFeatureSource
const overlapsboundary = []
for (const feature of features) {
const bbox = BBox.get(feature.feature)
const bbox = BBox.get(feature)
// There are a few strategies to deal with features that cross tile boundaries