maplibre-gl-layers 0.10.0 → 0.11.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.
@@ -1,14 +1,85 @@
1
1
  /*!
2
2
  * name: maplibre-gl-layers
3
- * version: 0.10.0
3
+ * version: 0.11.0
4
4
  * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
5
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
6
  * license: MIT
7
7
  * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
- * git.commit.hash: 58b99588e56fc80c6874d78a17e91a50901abc17
8
+ * git.commit.hash: 371efb126f281333d59ec75cfe788d45f3b1482e
9
9
  */
10
10
 
11
+ import { MercatorCoordinate } from 'maplibre-gl';
11
12
  import { SpriteMode, SpriteAnchor, SpriteImageOffset, SpriteInterpolationOptions, SpriteImageOriginLocation, SpriteLocation, SpriteTextGlyphHorizontalAlign, SpriteTextureMagFilter, SpriteTextureMinFilter, SpriteInterpolationMode, EasingFunction } from './types';
13
+ /**
14
+ * Corner model describing world displacements and resulting geographic coordinates for shader validation.
15
+ */
16
+ export interface SurfaceShaderCornerState {
17
+ east: number;
18
+ north: number;
19
+ lng: number;
20
+ lat: number;
21
+ }
22
+ /**
23
+ * Aggregated inputs required to reproduce surface geometry on the GPU.
24
+ */
25
+ export interface SurfaceShaderInputs {
26
+ mercatorCenter: {
27
+ x: number;
28
+ y: number;
29
+ z: number;
30
+ };
31
+ worldToMercatorScale: {
32
+ east: number;
33
+ north: number;
34
+ };
35
+ halfSizeMeters: {
36
+ east: number;
37
+ north: number;
38
+ };
39
+ anchor: SpriteAnchor;
40
+ offsetMeters: {
41
+ east: number;
42
+ north: number;
43
+ };
44
+ sinCos: {
45
+ sin: number;
46
+ cos: number;
47
+ };
48
+ totalRotateDeg: number;
49
+ depthBiasNdc: number;
50
+ centerDisplacement: {
51
+ east: number;
52
+ north: number;
53
+ };
54
+ baseLngLat: SpriteLocation;
55
+ displacedCenter: SpriteLocation;
56
+ scaleAdjustment: number;
57
+ corners: SurfaceShaderCornerState[];
58
+ clipCenter: {
59
+ x: number;
60
+ y: number;
61
+ z: number;
62
+ w: number;
63
+ };
64
+ clipBasisEast: {
65
+ x: number;
66
+ y: number;
67
+ z: number;
68
+ w: number;
69
+ };
70
+ clipBasisNorth: {
71
+ x: number;
72
+ y: number;
73
+ z: number;
74
+ w: number;
75
+ };
76
+ clipCorners: Array<{
77
+ x: number;
78
+ y: number;
79
+ z: number;
80
+ w: number;
81
+ }>;
82
+ }
12
83
  /**
13
84
  * Runtime state describing the active interpolation between two sprite locations.
14
85
  * Consumers reuse the same state across ticks to avoid re-allocations while animation is running.
@@ -163,6 +234,7 @@ export interface InternalSpriteImageState {
163
234
  lastCommandRotateDeg: number;
164
235
  lastCommandOffsetDeg: number;
165
236
  lastCommandOffsetMeters: number;
237
+ surfaceShaderInputs?: SurfaceShaderInputs;
166
238
  hitTestCorners?: [
167
239
  MutableSpriteScreenPoint,
168
240
  MutableSpriteScreenPoint,
@@ -186,4 +258,8 @@ export interface InternalSpriteCurrentState<TTag> {
186
258
  lastCommandLocation: SpriteLocation;
187
259
  lastAutoRotationLocation: SpriteLocation;
188
260
  lastAutoRotationAngleDeg: number;
261
+ cachedMercator: MercatorCoordinate;
262
+ cachedMercatorLng: number;
263
+ cachedMercatorLat: number;
264
+ cachedMercatorZ: number;
189
265
  }
@@ -1,11 +1,11 @@
1
1
  /*!
2
2
  * name: maplibre-gl-layers
3
- * version: 0.10.0
3
+ * version: 0.11.0
4
4
  * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
5
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
6
  * license: MIT
7
7
  * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
- * git.commit.hash: 58b99588e56fc80c6874d78a17e91a50901abc17
8
+ * git.commit.hash: 371efb126f281333d59ec75cfe788d45f3b1482e
9
9
  */
10
10
 
11
11
  import { SpriteInterpolationOptions, SpriteLocation } from './types';
@@ -1,11 +1,11 @@
1
1
  /*!
2
2
  * name: maplibre-gl-layers
3
- * version: 0.10.0
3
+ * version: 0.11.0
4
4
  * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
5
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
6
  * license: MIT
7
7
  * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
- * git.commit.hash: 58b99588e56fc80c6874d78a17e91a50901abc17
8
+ * git.commit.hash: 371efb126f281333d59ec75cfe788d45f3b1482e
9
9
  */
10
10
 
11
11
  import { SpriteInterpolationOptions, SpriteImageOffset } from './types';
@@ -1,11 +1,11 @@
1
1
  /*!
2
2
  * name: maplibre-gl-layers
3
- * version: 0.10.0
3
+ * version: 0.11.0
4
4
  * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
5
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
6
  * license: MIT
7
7
  * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
- * git.commit.hash: 58b99588e56fc80c6874d78a17e91a50901abc17
8
+ * git.commit.hash: 371efb126f281333d59ec75cfe788d45f3b1482e
9
9
  */
10
10
 
11
11
  import { SpriteLocation } from './types';
@@ -0,0 +1,34 @@
1
+ /*!
2
+ * name: maplibre-gl-layers
3
+ * version: 0.11.0
4
+ * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
+ * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
+ * license: MIT
7
+ * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
+ * git.commit.hash: 371efb126f281333d59ec75cfe788d45f3b1482e
9
+ */
10
+
11
+ export interface Rect {
12
+ readonly x0: number;
13
+ readonly y0: number;
14
+ readonly x1: number;
15
+ readonly y1: number;
16
+ }
17
+ export interface Item<TState> extends Rect {
18
+ readonly state: TState;
19
+ }
20
+ export interface LooseQuadTreeOptions {
21
+ readonly bounds: Rect;
22
+ readonly maxItemsPerNode?: number;
23
+ readonly maxDepth?: number;
24
+ readonly looseness?: number;
25
+ }
26
+ export interface LooseQuadTree<TState> {
27
+ readonly size: number;
28
+ add(item: Item<TState>): void;
29
+ remove(x0: number, y0: number, x1: number, y1: number, item: Item<TState>): boolean;
30
+ update(oldX0: number, oldY0: number, oldX1: number, oldY1: number, newX0: number, newY0: number, newX1: number, newY1: number, item: Item<TState>): boolean;
31
+ lookup(x0: number, y0: number, x1: number, y1: number): Item<TState>[];
32
+ clear(): void;
33
+ }
34
+ export declare const createLooseQuadTree: <TState>(options: LooseQuadTreeOptions) => LooseQuadTree<TState>;
package/dist/math.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  /*!
2
2
  * name: maplibre-gl-layers
3
- * version: 0.10.0
3
+ * version: 0.11.0
4
4
  * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
5
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
6
  * license: MIT
7
7
  * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
- * git.commit.hash: 58b99588e56fc80c6874d78a17e91a50901abc17
8
+ * git.commit.hash: 371efb126f281333d59ec75cfe788d45f3b1482e
9
9
  */
10
10
 
11
11
  import { SpriteAnchor, SpriteImageOffset, SpriteLocation, SpriteScalingOptions } from './types';
@@ -391,6 +391,19 @@ export type QuadCorner = {
391
391
  * @returns {QuadCorner[]} Array containing screen- and texture-space information per corner.
392
392
  */
393
393
  export declare const calculateBillboardCornerScreenPositions: (params: BillboardCornerParams) => QuadCorner[];
394
+ export type SurfaceShaderModelParams = {
395
+ baseLngLat: SpriteLocation;
396
+ worldWidthMeters: number;
397
+ worldHeightMeters: number;
398
+ anchor: SpriteAnchor;
399
+ totalRotateDeg: number;
400
+ offsetMeters: {
401
+ east: number;
402
+ north: number;
403
+ };
404
+ };
405
+ export type SurfaceShaderCornerModel = SurfaceCorner & SpriteLocation;
406
+ export declare const computeSurfaceCornerShaderModel: (params: SurfaceShaderModelParams) => SurfaceShaderCornerModel[];
394
407
  /**
395
408
  * Parameters for projecting a surface sprite's center into screen space.
396
409
  * @typedef SurfaceCenterParams
@@ -1,11 +1,11 @@
1
1
  /*!
2
2
  * name: maplibre-gl-layers
3
- * version: 0.10.0
3
+ * version: 0.11.0
4
4
  * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
5
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
6
  * license: MIT
7
7
  * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
- * git.commit.hash: 58b99588e56fc80c6874d78a17e91a50901abc17
8
+ * git.commit.hash: 371efb126f281333d59ec75cfe788d45f3b1482e
9
9
  */
10
10
 
11
11
  import { SpriteInterpolationOptions } from './types';
package/dist/types.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  /*!
2
2
  * name: maplibre-gl-layers
3
- * version: 0.10.0
3
+ * version: 0.11.0
4
4
  * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
5
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
6
  * license: MIT
7
7
  * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
- * git.commit.hash: 58b99588e56fc80c6874d78a17e91a50901abc17
8
+ * git.commit.hash: 371efb126f281333d59ec75cfe788d45f3b1482e
9
9
  */
10
10
 
11
11
  import { CustomLayerInterface } from 'maplibre-gl';
@@ -522,6 +522,11 @@ export interface SpriteLayerOptions {
522
522
  spriteScaling?: SpriteScalingOptions;
523
523
  /** Optional texture filtering configuration. */
524
524
  textureFiltering?: SpriteTextureFilteringOptions;
525
+ /**
526
+ * When true, renders red outlines around sprite hit-test regions to aid debugging.
527
+ * Defaults to false.
528
+ */
529
+ showDebugBounds?: boolean;
525
530
  }
526
531
  /**
527
532
  * Options used when registering SVG images.
@@ -704,6 +709,12 @@ export interface SpriteLayerInterface<TTag = any> extends CustomLayerInterface {
704
709
  * @returns {SpriteCurrentState<TTag> | undefined} Current state or `undefined` when not found.
705
710
  */
706
711
  readonly getSpriteState: (spriteId: string) => SpriteCurrentState<TTag> | undefined;
712
+ /**
713
+ * Enables or disables hit-test maintenance (quad-tree updates).
714
+ *
715
+ * @param {boolean} enabled - When false, hit testing is skipped and the internal data structure is cleared.
716
+ */
717
+ readonly setHitTestEnabled: (enabled: boolean) => void;
707
718
  /**
708
719
  * Attaches an image definition to a sprite.
709
720
  *
package/dist/utils.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  /*!
2
2
  * name: maplibre-gl-layers
3
- * version: 0.10.0
3
+ * version: 0.11.0
4
4
  * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
5
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
6
  * license: MIT
7
7
  * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
- * git.commit.hash: 58b99588e56fc80c6874d78a17e91a50901abc17
8
+ * git.commit.hash: 371efb126f281333d59ec75cfe788d45f3b1482e
9
9
  */
10
10
 
11
11
  import { SpriteImageRegisterOptions } from './types';
package/package.json CHANGED
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "git": {
3
3
  "tags": [
4
- "0.10.0"
4
+ "0.11.0"
5
5
  ],
6
6
  "branches": [
7
7
  "main"
8
8
  ],
9
- "version": "0.10.0",
9
+ "version": "0.11.0",
10
10
  "commit": {
11
- "hash": "58b99588e56fc80c6874d78a17e91a50901abc17",
12
- "shortHash": "58b9958",
13
- "date": "2025-10-31T17:33:48+09:00Z",
11
+ "hash": "371efb126f281333d59ec75cfe788d45f3b1482e",
12
+ "shortHash": "371efb1",
13
+ "date": "2025-11-01T23:41:18+09:00Z",
14
14
  "message": "Merge branch 'develop'"
15
15
  }
16
16
  },
17
- "version": "0.10.0",
17
+ "version": "0.11.0",
18
18
  "description": "MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images",
19
19
  "author": "Kouji Matsui (@kekyo@mi.kekyo.net)",
20
20
  "license": "MIT",