forked from MapComplete/MapComplete
68 lines
2.2 KiB
TypeScript
68 lines
2.2 KiB
TypeScript
import { FeatureCollection, Point } from "geojson"
|
|
import { describe, it } from "vitest"
|
|
import StaticFeatureSource from "../../../src/Logic/FeatureSource/Sources/StaticFeatureSource"
|
|
import {
|
|
ClusterGrouping,
|
|
ClusteringFeatureSource,
|
|
} from "../../../src/Logic/FeatureSource/TiledFeatureSource/ClusteringFeatureSource"
|
|
import { UIEventSource } from "../../../src/Logic/UIEventSource"
|
|
import { expect } from "chai"
|
|
|
|
const points: FeatureCollection<Point> = {
|
|
type: "FeatureCollection",
|
|
features: [
|
|
{
|
|
type: "Feature",
|
|
properties: { name: "a" },
|
|
geometry: {
|
|
coordinates: [9.759318139161195, 55.56552169756637],
|
|
type: "Point",
|
|
},
|
|
},
|
|
{
|
|
type: "Feature",
|
|
properties: { name: "b" },
|
|
geometry: {
|
|
coordinates: [9.759768615515327, 55.56569930560951],
|
|
type: "Point",
|
|
},
|
|
},
|
|
{
|
|
type: "Feature",
|
|
properties: { name: "c" },
|
|
geometry: {
|
|
coordinates: [9.75879327221594, 55.56569229478089],
|
|
type: "Point",
|
|
},
|
|
},
|
|
{
|
|
type: "Feature",
|
|
properties: { name: "d" },
|
|
geometry: {
|
|
coordinates: [9.759380131319915, 55.56507066300628],
|
|
type: "Point",
|
|
},
|
|
},
|
|
],
|
|
}
|
|
|
|
describe("ClusteringFeatureSource", () => {
|
|
it("smallTest", () => {
|
|
const source = new StaticFeatureSource(points.features)
|
|
const zoom = new UIEventSource(19)
|
|
// On zoomlevel 19, all points are in a different tile
|
|
const clusteringSource = new ClusteringFeatureSource(source, zoom, "test", {
|
|
cutoff: 2,
|
|
dontClusterAboveZoom: 100,
|
|
})
|
|
const allClusters = ClusterGrouping.singleton.features
|
|
expect(allClusters.data.length).to.eq(0)
|
|
expect(clusteringSource.features.data.length).to.eq(4)
|
|
|
|
zoom.set(13)
|
|
|
|
expect(allClusters.data.length).to.eq(1)
|
|
expect(allClusters.data[0].properties["total_metric"]).to.eq("4")
|
|
expect(clusteringSource.features.data.length).to.eq(0)
|
|
})
|
|
})
|