isard 1.2.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +124 -0
- package/README.md +46 -39
- package/dist/basemap/basemaps.js +1 -0
- package/dist/basemap/basemaps.js.map +1 -1
- package/dist/basemap/pmtileslayer.d.ts +33 -0
- package/dist/basemap/pmtileslayer.js +97 -0
- package/dist/basemap/pmtileslayer.js.map +1 -0
- package/dist/basemap/trees.d.ts +26 -0
- package/dist/basemap/trees.js +141 -0
- package/dist/basemap/trees.js.map +1 -0
- package/dist/basemap/vectorstyle.d.ts +10 -0
- package/dist/basemap/vectorstyle.js +35 -0
- package/dist/basemap/vectorstyle.js.map +1 -1
- package/dist/basemap/vectortiles.d.ts +93 -44
- package/dist/basemap/vectortiles.js +511 -303
- package/dist/basemap/vectortiles.js.map +1 -1
- package/dist/basemap/workerpool.d.ts +17 -0
- package/dist/basemap/workerpool.js +203 -0
- package/dist/basemap/workerpool.js.map +1 -0
- package/dist/basemap.worker.js +2 -2
- package/dist/basemap.worker.js.map +18 -8
- package/dist/bind/layers.js +10 -0
- package/dist/bind/layers.js.map +1 -1
- package/dist/decoder.worker.js +4 -4
- package/dist/decoder.worker.js.map +3 -3
- package/dist/engine-loader.d.ts +8 -1
- package/dist/engine-loader.js +20 -1
- package/dist/engine-loader.js.map +1 -1
- package/dist/geoplateforme.d.ts +16 -0
- package/dist/geoplateforme.js +23 -0
- package/dist/geoplateforme.js.map +1 -1
- package/dist/grid-module.d.ts +44 -0
- package/dist/grid-module.js +63 -0
- package/dist/grid-module.js.map +1 -0
- package/dist/grids.d.ts +51 -0
- package/dist/grids.js +88 -0
- package/dist/grids.js.map +1 -0
- package/dist/index.d.ts +14 -4
- package/dist/index.js +11 -2
- package/dist/index.js.map +1 -1
- package/dist/isard_bg.wasm +0 -0
- package/dist/isard_core_bg.wasm +0 -0
- package/dist/isard_grid_bg.wasm +0 -0
- package/dist/isard_tess_bg.wasm +0 -0
- package/dist/layers/flow.d.ts +111 -0
- package/dist/layers/flow.js +222 -0
- package/dist/layers/flow.js.map +1 -0
- package/dist/layers/layers.js +9 -0
- package/dist/layers/layers.js.map +1 -1
- package/dist/layers/symbols.d.ts +2 -0
- package/dist/layers/symbols.js +2 -1
- package/dist/layers/symbols.js.map +1 -1
- package/dist/layers/vectors.d.ts +60 -0
- package/dist/layers/vectors.js +130 -0
- package/dist/layers/vectors.js.map +1 -0
- package/dist/map/frame-loop.d.ts +3 -0
- package/dist/map/frame-loop.js +6 -0
- package/dist/map/frame-loop.js.map +1 -1
- package/dist/map/layer-spec.d.ts +4 -1
- package/dist/map/layer-spec.js +2 -0
- package/dist/map/layer-spec.js.map +1 -1
- package/dist/map/raster-source.js +1 -1
- package/dist/map/raster-source.js.map +1 -1
- package/dist/map/workers.d.ts +5 -1
- package/dist/map/workers.js +36 -1
- package/dist/map/workers.js.map +1 -1
- package/dist/map.d.ts +35 -6
- package/dist/map.js +83 -11
- package/dist/map.js.map +1 -1
- package/dist/react/IsardMap.js +1 -0
- package/dist/react/IsardMap.js.map +1 -1
- package/dist/react/Layer.d.ts +2 -0
- package/dist/react/Layer.js.map +1 -1
- package/dist/react/Swipe.d.ts +11 -4
- package/dist/react/Swipe.js +26 -15
- package/dist/react/Swipe.js.map +1 -1
- package/dist/react/VectorGeometry.d.ts +35 -0
- package/dist/react/VectorGeometry.js +82 -0
- package/dist/react/VectorGeometry.js.map +1 -0
- package/dist/react/context.d.ts +2 -1
- package/dist/react/context.js.map +1 -1
- package/dist/react/index.d.ts +2 -1
- package/dist/react/index.js +2 -1
- package/dist/react/index.js.map +1 -1
- package/dist/types.d.ts +30 -3
- package/dist/types.js.map +1 -1
- package/dist/ui/minimap.d.ts +25 -0
- package/dist/ui/minimap.js +90 -0
- package/dist/ui/minimap.js.map +1 -0
- package/dist/ui/scale.d.ts +19 -0
- package/dist/ui/scale.js +44 -0
- package/dist/ui/scale.js.map +1 -0
- package/dist/ui/search.d.ts +25 -0
- package/dist/ui/search.js +119 -0
- package/dist/ui/search.js.map +1 -0
- package/dist/ui/style.js +17 -0
- package/dist/ui/style.js.map +1 -1
- package/dist/util/sun.d.ts +11 -0
- package/dist/util/sun.js +26 -0
- package/dist/util/sun.js.map +1 -0
- package/dist/wasm/isard.d.ts +124 -7
- package/dist/wasm/isard.js +319 -8
- package/dist/wasm/isard_core.d.ts +124 -7
- package/dist/wasm/isard_core.js +319 -8
- package/dist/wasm/isard_grid.d.ts +101 -0
- package/dist/wasm/isard_grid.js +375 -0
- package/dist/wasm/isard_tess.d.ts +109 -0
- package/dist/wasm/isard_tess.js +398 -0
- package/dist/workers/basemap/geometry.d.ts +72 -0
- package/dist/workers/basemap/labels.d.ts +8 -0
- package/dist/workers/basemap/raster.d.ts +10 -0
- package/dist/workers/basemap/street.d.ts +19 -0
- package/dist/workers/basemap/tiles.d.ts +65 -0
- package/dist/workers/basemap/trees.d.ts +19 -0
- package/dist/workers/basemap.worker.d.ts +147 -22
- package/dist/workers/basemap.worker.js +93 -553
- package/dist/workers/basemap.worker.js.map +1 -1
- package/package.json +6 -4
- package/vite.js +11 -2
|
@@ -8,19 +8,22 @@
|
|
|
8
8
|
* Any subset of the style can be drawn on its own raster layer (`raster({ layers })`), at its own place in the stack:
|
|
9
9
|
* rivers from the basemap's data over a flood layer, for instance, restyled with `extraLayers`.
|
|
10
10
|
*/
|
|
11
|
+
import type { ExtrusionLayer, ExtrusionOptions } from '../layers/extrusions.ts';
|
|
11
12
|
import type { Feature, Size } from '../layers/features.ts';
|
|
12
|
-
import type {
|
|
13
|
+
import type { FlowLayer, FlowOptions } from '../layers/flow.ts';
|
|
14
|
+
import type { Layer, ModelLayer, RasterLayer } from '../layers/layers.ts';
|
|
13
15
|
import type { SymbolLayer } from '../layers/symbols.ts';
|
|
16
|
+
import type { VectorLayer } from '../layers/vectors.ts';
|
|
14
17
|
import type { GeoMap } from '../map.ts';
|
|
15
|
-
import type
|
|
16
|
-
import type { Camera } from '../wasm/isard.js';
|
|
17
|
-
import type { Priority } from '../workers/basemap.worker.ts';
|
|
18
|
+
import { type TreeColors } from './trees.ts';
|
|
18
19
|
import { type Json, type LabelCandidate, type RasterSource, type Style, type StyleLayer } from './vectorstyle.ts';
|
|
19
20
|
/** OpenFreeMap's styles: OpenStreetMap data in the OpenMapTiles schema, worldwide, free and without a key */
|
|
20
21
|
export declare const OPENFREEMAP_STYLES: {
|
|
21
22
|
readonly positron: "https://tiles.openfreemap.org/styles/positron";
|
|
22
23
|
readonly liberty: "https://tiles.openfreemap.org/styles/liberty";
|
|
23
24
|
readonly bright: "https://tiles.openfreemap.org/styles/bright";
|
|
25
|
+
readonly dark: "https://tiles.openfreemap.org/styles/dark";
|
|
26
|
+
readonly fiord: "https://tiles.openfreemap.org/styles/fiord";
|
|
24
27
|
};
|
|
25
28
|
/** PLAN.IGN vector styles of the Géoplateforme (France) */
|
|
26
29
|
export declare const PLAN_STYLES: {
|
|
@@ -32,6 +35,7 @@ export declare const VECTOR_BASEMAPS: {
|
|
|
32
35
|
readonly 'osm-positron': "https://tiles.openfreemap.org/styles/positron";
|
|
33
36
|
readonly 'osm-liberty': "https://tiles.openfreemap.org/styles/liberty";
|
|
34
37
|
readonly 'osm-bright': "https://tiles.openfreemap.org/styles/bright";
|
|
38
|
+
readonly 'osm-dark': "https://tiles.openfreemap.org/styles/dark";
|
|
35
39
|
readonly 'ign-plan-vector': "https://data.geopf.fr/annexes/ressources/vectorTiles/styles/PLAN.IGN/standard.json";
|
|
36
40
|
readonly 'ign-plan-grey-vector': "https://data.geopf.fr/annexes/ressources/vectorTiles/styles/PLAN.IGN/gris.json";
|
|
37
41
|
};
|
|
@@ -53,19 +57,6 @@ export declare const styleAttribution: (style: string | Style) => string | undef
|
|
|
53
57
|
/** Text or icon size of a style (a number, legacy stops, or the stops of a zoom expression made by the worker) as a
|
|
54
58
|
* size for the symbol layer */
|
|
55
59
|
export declare const size: (value: Json, fallback?: number) => Size;
|
|
56
|
-
/** Default size of a basemap worker pool: cores - 1, 1 to 4 */
|
|
57
|
-
export declare const defaultWorkerCount: () => number;
|
|
58
|
-
/** Default URL of the basemap worker: in the page's assets folder (`isard/vite`), else next to the module */
|
|
59
|
-
export declare const defaultWorkerUrl: (assetsUrl?: string | URL) => string | URL;
|
|
60
|
-
/** Fetch priority of a raster tile drawn by the workers: 'high' near the center of the view, at the current zoom or
|
|
61
|
-
* coarser; 'low' far from it or finer (prefetch); 'auto' between */
|
|
62
|
-
export declare const tilePriority: (z: number, x: number, y: number, camera: Pick<Camera, "center" | "zoom">) => Priority;
|
|
63
|
-
/** The worker of a vector tile among `count`: always the same one */
|
|
64
|
-
export declare const workerIndex: (vz: number, vx: number, vy: number, count: number) => number;
|
|
65
|
-
/** The worker-side key of a renderer: unique across the `VectorTiles` sharing a pool */
|
|
66
|
-
export declare const rendererKey: (namespace: string, n: number) => string;
|
|
67
|
-
/** What the pool needs of a worker (a `Worker`, or a stand-in in tests) */
|
|
68
|
-
export type PoolWorker = Pick<Worker, 'postMessage' | 'terminate' | 'onmessage' | 'onerror' | 'onmessageerror'>;
|
|
69
60
|
/** The labels of a vector tile: features by style layer (its index in the style), the higher layers first */
|
|
70
61
|
type TileLabels = [layer: number, features: Feature<LabelCandidate>[]][];
|
|
71
62
|
/** A tile's label candidates as features, by style layer */
|
|
@@ -109,7 +100,7 @@ export declare class VectorTiles {
|
|
|
109
100
|
/** Prefix of the names of its sprites' images among the map's icons */
|
|
110
101
|
private get iconPrefix();
|
|
111
102
|
private request;
|
|
112
|
-
/** Sends a renderer of these layers to every worker; returns its key */
|
|
103
|
+
/** Sends a renderer of these layers to every worker (again under `again`, restyled); returns its key */
|
|
113
104
|
private renderer;
|
|
114
105
|
/**
|
|
115
106
|
* A raster layer drawing the style's fills, lines and circles (or those `layers` keeps, then `extraLayers`, of the
|
|
@@ -124,6 +115,82 @@ export declare class VectorTiles {
|
|
|
124
115
|
maxZoom?: number;
|
|
125
116
|
before?: Parameters<GeoMap['addRaster']>[0]['before'];
|
|
126
117
|
}): RasterLayer;
|
|
118
|
+
/**
|
|
119
|
+
* An extrusion layer of the polygons of the style's fill layers that `layers` keeps (by default its buildings: the
|
|
120
|
+
* fill or fill-extrusion layers of PLAN IGN's `bati_surf` or OpenMapTiles' `building`), raised by the style
|
|
121
|
+
* given (`height`, `base`, `color`, `ramp`…; the properties of the tiles' features). Its tiles follow the view: at
|
|
122
|
+
* the source's deepest level, the `maxTiles` nearest to the center, from `minZoom` on (15 by default); the tiles
|
|
123
|
+
* leaving the view are dropped.
|
|
124
|
+
*/
|
|
125
|
+
extrusions<P = Record<string, unknown>>(options?: Omit<ExtrusionOptions<P>, 'data'> & {
|
|
126
|
+
layers?: (layer: StyleLayer) => boolean;
|
|
127
|
+
minZoom?: number;
|
|
128
|
+
maxTiles?: number;
|
|
129
|
+
}): ExtrusionLayer<P>;
|
|
130
|
+
/**
|
|
131
|
+
* The wind through the streets around the view, as particles at street level (`height`, default 3 metres) between
|
|
132
|
+
* the style's buildings (`layers`, default its `building` and `bati_surf` layers): their footprints laid on a grid of
|
|
133
|
+
* `cell` metres (default 4) over a square of `size` metres (default 1200) around the view's center, the flow of the
|
|
134
|
+
* air round them a potential flow (it goes round the blocks and faster through the narrow streets; no wake behind
|
|
135
|
+
* them), computed in a worker by the grid module from street level (`minZoom`, default 15) and again when the view
|
|
136
|
+
* leaves the square's middle. `wind` is the wind far away (east and north, m/s, default a light breeze from the
|
|
137
|
+
* south-west); `setWind` changes it at once (the flow is linear in it: nothing computed again), from a model's hour
|
|
138
|
+
* (`windAt`) for instance; `computed` resolves once the first square's flow is there. The other options are the flow
|
|
139
|
+
* layer's (`addFlow`)
|
|
140
|
+
*/
|
|
141
|
+
streetWind(options?: Omit<FlowOptions, 'field' | 'fields' | 'time'> & {
|
|
142
|
+
wind?: [u: number, v: number];
|
|
143
|
+
size?: number;
|
|
144
|
+
cell?: number;
|
|
145
|
+
iterations?: number;
|
|
146
|
+
layers?: (layer: StyleLayer) => boolean;
|
|
147
|
+
minZoom?: number;
|
|
148
|
+
}): FlowLayer & {
|
|
149
|
+
setWind(wind: [u: number, v: number]): void;
|
|
150
|
+
computed: Promise<void>;
|
|
151
|
+
};
|
|
152
|
+
/**
|
|
153
|
+
* Trees on the style's woods, forests and grass (or the fill layers `layers` keeps) as 3D models, from street level
|
|
154
|
+
* (`minZoom`, default 15): the workers scatter them over the polygons of the vector tiles around the view, `spacing`
|
|
155
|
+
* metres apart (by style layer: 9 in woods, 25 on grass, by default) on a jittered grid, the same trees whenever a
|
|
156
|
+
* tile comes back; the engine draws them all in one instanced draw, on the relief. A low-poly tree by default (its
|
|
157
|
+
* `colors`), or your own glTF (`url`, `data`, about 10 metres high, standing on its origin). Dense around the
|
|
158
|
+
* view's center, fewer and fewer away from it (as the camera moves too), at most `maxInstances` drawn (default
|
|
159
|
+
* 25000); at most `maxTiles` tiles (default 9) and `maxTrees` trees in each (default 30000). The models load the
|
|
160
|
+
* engine with 3D Tiles.
|
|
161
|
+
*/
|
|
162
|
+
trees(options?: {
|
|
163
|
+
layers?: (layer: StyleLayer) => boolean;
|
|
164
|
+
spacing?: number | ((layer: StyleLayer) => number);
|
|
165
|
+
minZoom?: number;
|
|
166
|
+
maxTiles?: number;
|
|
167
|
+
maxTrees?: number;
|
|
168
|
+
maxInstances?: number;
|
|
169
|
+
colors?: Partial<TreeColors>;
|
|
170
|
+
url?: string;
|
|
171
|
+
data?: ArrayBuffer | ArrayBufferView<ArrayBuffer>;
|
|
172
|
+
before?: Layer;
|
|
173
|
+
}): ModelLayer;
|
|
174
|
+
/**
|
|
175
|
+
* A layer drawing the style's fills, lines and buildings (or those `layers` keeps; backgrounds as fills, the
|
|
176
|
+
* `fill-extrusion` layers raised into buildings by their height and base height) as geometry instead of images: the
|
|
177
|
+
* workers cut the vector tiles in view into polygons and lines, which the engine draws on the globe and the relief,
|
|
178
|
+
* in the style's order, each style layer over its zoom range. Sharp at any zoom
|
|
179
|
+
* and pitch, picked by feature (`pick` gives its properties and style layer), restyled without cutting the tiles
|
|
180
|
+
* again (`setPaintProperty`, `setLayoutProperty`). Its tiles follow the view, while it moves too, coarser far away in a
|
|
181
|
+
* tilted view, and those leaving it stay until the ones replacing them are there; past the source's deepest level,
|
|
182
|
+
* cut again from its tiles down to level 18 (overzoom: their filters and styles those of their level). The fills' outlines are drawn one
|
|
183
|
+
* pixel wide, the lines' ends as their `line-cap` says (their joins round), the colors follow the camera's zoom. The
|
|
184
|
+
* layers drawn with a pattern and the circles are left out (the raster path draws them), as are `line-offset`,
|
|
185
|
+
* `line-blur` and the translations (`fill-translate`, `line-translate`); `raster` stays the lighter path for heavy
|
|
186
|
+
* styles and small devices. At night (`setSun`) the line layers `streets` keeps glow (by default those whose id names
|
|
187
|
+
* a road, not its casing, a railway, a path or a tunnel).
|
|
188
|
+
*/
|
|
189
|
+
vectors(options?: {
|
|
190
|
+
layers?: (layer: StyleLayer) => boolean;
|
|
191
|
+
streets?: (layer: StyleLayer) => boolean;
|
|
192
|
+
before?: Layer;
|
|
193
|
+
}): VectorLayer;
|
|
127
194
|
/**
|
|
128
195
|
* A symbol layer with the labels of the style's symbol layers (or those `layers` keeps), updated as the view
|
|
129
196
|
* moves: the labels of the vector tiles in view, the higher style layers placed first. With a raster layer of
|
|
@@ -135,35 +202,17 @@ export declare class VectorTiles {
|
|
|
135
202
|
layers?: (layer: StyleLayer) => boolean;
|
|
136
203
|
maxTiles?: number;
|
|
137
204
|
}): SymbolLayer<LabelCandidate>;
|
|
205
|
+
/**
|
|
206
|
+
* Makes a layer's tiles follow the view: `update` now and where the camera stops (`moveend`), `moving` every
|
|
207
|
+
* `VECTOR_MOVE_REFRESH_MS` while it moves; the requests `held` aborted when destroyed
|
|
208
|
+
*/
|
|
209
|
+
private followView;
|
|
138
210
|
/** Stops its workers' work and removes its raster and label layers from the map (those still there) */
|
|
139
211
|
destroy(): void;
|
|
140
212
|
}
|
|
141
213
|
/**
|
|
142
|
-
* A
|
|
143
|
-
*
|
|
144
|
-
* layer, the `name` of points as labels. `source` is the style's vector source (`url`: TileJSON or `pmtiles://…`, or
|
|
145
|
-
* `tiles`)
|
|
214
|
+
* A `line-dasharray` as the engine takes it: two dashes and gaps in line widths (an odd count repeated, as the
|
|
215
|
+
* canvas's `setLineDash`; past four, the first four), zeros for a solid line
|
|
146
216
|
*/
|
|
147
|
-
export declare const
|
|
148
|
-
url?: string;
|
|
149
|
-
tiles?: string[];
|
|
150
|
-
minzoom?: number;
|
|
151
|
-
maxzoom?: number;
|
|
152
|
-
}, layers: readonly string[]) => Style;
|
|
153
|
-
/** Options of `GeoMap.addPmtiles` */
|
|
154
|
-
export interface PmtilesOptions {
|
|
155
|
-
/** What the archive holds (default from its header: raster images or vector tiles) */
|
|
156
|
-
kind?: 'raster' | 'vector';
|
|
157
|
-
/** A MapLibre style for vector tiles (its vector source `pmtiles://…`); default `basicStyle` of the archive's layers */
|
|
158
|
-
style?: Style;
|
|
159
|
-
opacity?: number;
|
|
160
|
-
/** Texture size of raster tiles (default 256; 512 for the sharper tiles of a 512 px archive) */
|
|
161
|
-
size?: number;
|
|
162
|
-
/** Credits, HTML (default the archive's `attribution` metadata, as text) */
|
|
163
|
-
attribution?: string;
|
|
164
|
-
before?: Layer;
|
|
165
|
-
}
|
|
166
|
-
/** A raster loader reading the tiles of a `pmtiles://` archive URL (images of any size, drawn at `size`); undefined
|
|
167
|
-
* for another URL */
|
|
168
|
-
export declare const pmtilesRasterLoader: (url: string, size: number) => RasterOptions["loader"];
|
|
217
|
+
export declare const dashes: (value: Json | undefined, zoom: number) => [number, number, number, number];
|
|
169
218
|
export {};
|