maplibre-gl-layers 0.17.0 → 0.19.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/dist/SpriteLayer.d.ts +3 -3
- package/dist/config.d.ts +2 -2
- package/dist/const.d.ts +7 -4
- package/dist/default.d.ts +2 -2
- package/dist/gl/atlas.d.ts +2 -2
- package/dist/gl/hitTest.d.ts +3 -3
- package/dist/gl/mouseEvents.d.ts +36 -0
- package/dist/gl/shader.d.ts +2 -2
- package/dist/gl/text.d.ts +2 -2
- package/dist/gl/tracking.d.ts +36 -0
- package/dist/host/calculationHost.d.ts +15 -13
- package/dist/host/mapLibreProjectionHost.d.ts +2 -2
- package/dist/host/projectionHost.d.ts +2 -2
- package/dist/host/runtime.d.ts +2 -2
- package/dist/host/wasmCalculationHost.d.ts +7 -7
- package/dist/host/wasmHost.d.ts +2 -2
- package/dist/host/wasmProjectionHost.d.ts +2 -2
- package/dist/index.cjs +1144 -1108
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.mjs +1144 -1108
- package/dist/index.mjs.map +1 -1
- package/dist/internalTypes.d.ts +18 -46
- package/dist/interpolation/degreeInterpolation.d.ts +8 -40
- package/dist/interpolation/distanceInterpolation.d.ts +9 -23
- package/dist/interpolation/easing.d.ts +2 -2
- package/dist/interpolation/interpolationChannels.d.ts +18 -6
- package/dist/interpolation/locationInterpolation.d.ts +30 -0
- package/dist/interpolation/rotationInterpolation.d.ts +2 -3
- package/dist/types.d.ts +57 -53
- package/dist/utils/color.d.ts +2 -2
- package/dist/utils/image.d.ts +2 -2
- package/dist/utils/looseQuadTree.d.ts +2 -2
- package/dist/utils/math.d.ts +38 -58
- package/dist/utils/utils.d.ts +2 -2
- package/dist/wasm/config.json.d.ts +2 -2
- package/package.json +6 -6
- package/dist/interpolation/interpolation.d.ts +0 -48
package/dist/utils/math.d.ts
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* name: maplibre-gl-layers
|
|
3
|
-
* version: 0.
|
|
3
|
+
* version: 0.19.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:
|
|
8
|
+
* git.commit.hash: 7bc93c11d7855dedb8d60f140af4e413252c32a7
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import { SpriteAnchor,
|
|
11
|
+
import { SpriteAnchor, SpriteLocation, SpritePoint, SpriteScalingOptions, SpriteScreenPoint } from '../types';
|
|
12
12
|
import { InternalSpriteCurrentState, MatrixInput, ProjectionHost, SpriteMercatorCoordinate } from '../internalTypes';
|
|
13
|
+
export type OffsetInput = {
|
|
14
|
+
offsetMeters?: number;
|
|
15
|
+
offsetDeg?: number;
|
|
16
|
+
} | undefined;
|
|
13
17
|
/**
|
|
14
18
|
* Produces a deep copy so later updates do not mutate the original object.
|
|
15
19
|
*/
|
|
@@ -44,18 +48,10 @@ export declare const multiplyMatrixAndVector: (matrix: MatrixInput, x: number, y
|
|
|
44
48
|
export interface ResolvedSpriteScalingOptions {
|
|
45
49
|
/** Effective number of meters represented by each rendered pixel. */
|
|
46
50
|
metersPerPixel: number;
|
|
47
|
-
/**
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
|
|
51
|
-
/** Scale multiplier applied at {@link ResolvedSpriteScalingOptions.zoomMin}. */
|
|
52
|
-
scaleMin: number;
|
|
53
|
-
/** Scale multiplier applied at {@link ResolvedSpriteScalingOptions.zoomMax}. */
|
|
54
|
-
scaleMax: number;
|
|
55
|
-
/** Lower clamp for sprite size in pixels. */
|
|
56
|
-
spriteMinPixel: number;
|
|
57
|
-
/** Upper clamp for sprite size in pixels. */
|
|
58
|
-
spriteMaxPixel: number;
|
|
51
|
+
/** Distance at or below which sprites stop growing further. */
|
|
52
|
+
minScaleDistanceMeters: number;
|
|
53
|
+
/** Distance at or above which sprites stop shrinking further. */
|
|
54
|
+
maxScaleDistanceMeters: number;
|
|
59
55
|
}
|
|
60
56
|
/**
|
|
61
57
|
* Fills missing {@link SpriteScalingOptions} values with defaults so downstream math can assume a complete object.
|
|
@@ -64,12 +60,12 @@ export interface ResolvedSpriteScalingOptions {
|
|
|
64
60
|
*/
|
|
65
61
|
export declare const resolveScalingOptions: (options?: SpriteScalingOptions) => ResolvedSpriteScalingOptions;
|
|
66
62
|
/**
|
|
67
|
-
* Computes a
|
|
68
|
-
* @param {number}
|
|
63
|
+
* Computes a scale factor based on camera-to-sprite distance.
|
|
64
|
+
* @param {number} distanceMeters - Calculated distance from camera to sprite.
|
|
69
65
|
* @param {ResolvedSpriteScalingOptions} scaling - Resolved scaling options.
|
|
70
|
-
* @returns {number} Scale
|
|
66
|
+
* @returns {number} Scale multiplier that clamps near/far distances to maintain consistent sizing.
|
|
71
67
|
*/
|
|
72
|
-
export declare const
|
|
68
|
+
export declare const calculateDistanceScaleFactor: (distanceMeters: number, scaling: ResolvedSpriteScalingOptions) => number;
|
|
73
69
|
/**
|
|
74
70
|
* Calculates meters per pixel at the given latitude.
|
|
75
71
|
* Uses Web Mercator scale and applies the latitude-based cosine correction.
|
|
@@ -95,32 +91,30 @@ export declare const calculateDistanceAndBearingMeters: (from: SpriteLocation, t
|
|
|
95
91
|
bearingDeg: number;
|
|
96
92
|
};
|
|
97
93
|
/**
|
|
98
|
-
* Calculates billboard image dimensions in pixels
|
|
94
|
+
* Calculates billboard image dimensions in pixels.
|
|
99
95
|
* @param {number | undefined} imageWidth - Source bitmap width in pixels.
|
|
100
96
|
* @param {number | undefined} imageHeight - Source bitmap height in pixels.
|
|
101
97
|
* @param {number} baseMetersPerPixel - Base scale derived from map zoom and latitude.
|
|
102
98
|
* @param {number} imageScale - User-provided scale multiplier.
|
|
103
|
-
* @param {number}
|
|
99
|
+
* @param {number} distanceScaleFactor - Distance-dependent scale multiplier.
|
|
104
100
|
* @param {number} effectivePixelsPerMeter - Conversion between world meters and screen pixels.
|
|
105
|
-
* @
|
|
106
|
-
* @param {number} spriteMaxPixel - Upper pixel clamp for the sprite's largest side.
|
|
107
|
-
* @returns {{ width: number; height: number; scaleAdjustment: number }} Pixel dimensions alongside the scale factor applied during clamping.
|
|
101
|
+
* @returns {{ width: number; height: number; scaleAdjustment: number }} Pixel dimensions alongside the scale factor (always 1 without clamping).
|
|
108
102
|
*/
|
|
109
|
-
export declare const calculateBillboardPixelDimensions: (imageWidth: number | undefined, imageHeight: number | undefined, baseMetersPerPixel: number, imageScale: number,
|
|
103
|
+
export declare const calculateBillboardPixelDimensions: (imageWidth: number | undefined, imageHeight: number | undefined, baseMetersPerPixel: number, imageScale: number, distanceScaleFactor: number, effectivePixelsPerMeter: number) => {
|
|
110
104
|
width: number;
|
|
111
105
|
height: number;
|
|
112
106
|
scaleAdjustment: number;
|
|
113
107
|
};
|
|
114
108
|
/**
|
|
115
109
|
* Computes the billboard offset in screen-space pixels.
|
|
116
|
-
* @param {
|
|
110
|
+
* @param {OffsetInput} offset - Offset configuration describing length (meters) and heading (degrees).
|
|
117
111
|
* @param {number} imageScale - User-provided scale multiplier applied to the offset distance.
|
|
118
|
-
* @param {number}
|
|
112
|
+
* @param {number} distanceScaleFactor - Distance-dependent scale multiplier.
|
|
119
113
|
* @param {number} effectivePixelsPerMeter - Conversion factor from meters to pixels.
|
|
120
114
|
* @param {number} [sizeScaleAdjustment=1] - Additional scale factor applied when sprite size is clamped.
|
|
121
115
|
* @returns {SpriteScreenPoint} Screen-space offset relative to the billboard center.
|
|
122
116
|
*/
|
|
123
|
-
export declare const calculateBillboardOffsetPixels: (offset:
|
|
117
|
+
export declare const calculateBillboardOffsetPixels: (offset: OffsetInput, imageScale: number, distanceScaleFactor: number, effectivePixelsPerMeter: number, sizeScaleAdjustment?: number) => SpriteScreenPoint;
|
|
124
118
|
/**
|
|
125
119
|
* Computes the screen-space shift caused by anchor rotation for billboards.
|
|
126
120
|
* @param {number} halfWidth - Half of the sprite width in pixels.
|
|
@@ -136,14 +130,10 @@ export declare const calculateBillboardAnchorShiftPixels: (halfWidth: number, ha
|
|
|
136
130
|
* @param {number | undefined} imageHeight - Source bitmap height in pixels.
|
|
137
131
|
* @param {number} baseMetersPerPixel - World meters represented by a pixel at the current zoom.
|
|
138
132
|
* @param {number} imageScale - User-provided scale multiplier.
|
|
139
|
-
* @param {number}
|
|
140
|
-
* @returns {{ width: number; height: number; scaleAdjustment: number }} World dimensions in meters and the applied clamp scale factor.
|
|
133
|
+
* @param {number} distanceScaleFactor - Distance-dependent scale multiplier.
|
|
134
|
+
* @returns {{ width: number; height: number; scaleAdjustment: number }} World dimensions in meters and the applied clamp scale factor (always 1 without clamping).
|
|
141
135
|
*/
|
|
142
|
-
export declare const calculateSurfaceWorldDimensions: (imageWidth: number | undefined, imageHeight: number | undefined, baseMetersPerPixel: number, imageScale: number,
|
|
143
|
-
effectivePixelsPerMeter?: number;
|
|
144
|
-
spriteMinPixel?: number;
|
|
145
|
-
spriteMaxPixel?: number;
|
|
146
|
-
}) => {
|
|
136
|
+
export declare const calculateSurfaceWorldDimensions: (imageWidth: number | undefined, imageHeight: number | undefined, baseMetersPerPixel: number, imageScale: number, distanceScaleFactor: number) => {
|
|
147
137
|
width: number;
|
|
148
138
|
height: number;
|
|
149
139
|
scaleAdjustment: number;
|
|
@@ -159,13 +149,13 @@ export declare const calculateSurfaceWorldDimensions: (imageWidth: number | unde
|
|
|
159
149
|
export declare const calculateSurfaceAnchorShiftMeters: (halfWidthMeters: number, halfHeightMeters: number, anchor: SpriteAnchor | undefined, totalRotateDeg: number) => SurfaceCorner;
|
|
160
150
|
/**
|
|
161
151
|
* Calculates surface image offsets in meters.
|
|
162
|
-
* @param {
|
|
152
|
+
* @param {OffsetInput} offset - Offset configuration for the surface sprite.
|
|
163
153
|
* @param {number} imageScale - User-provided scale multiplier applied to the offset distance.
|
|
164
|
-
* @param {number}
|
|
154
|
+
* @param {number} distanceScaleFactor - Distance-dependent scale multiplier.
|
|
165
155
|
* @param {number} [sizeScaleAdjustment=1] - Additional scale factor applied when sprite size is clamped.
|
|
166
156
|
* @returns {SurfaceCorner} Offset vector in meters.
|
|
167
157
|
*/
|
|
168
|
-
export declare const calculateSurfaceOffsetMeters: (offset:
|
|
158
|
+
export declare const calculateSurfaceOffsetMeters: (offset: OffsetInput, imageScale: number, distanceScaleFactor: number, sizeScaleAdjustment?: number) => SurfaceCorner;
|
|
169
159
|
/**
|
|
170
160
|
* Adds east/north distances (meters) to a longitude/latitude pair.
|
|
171
161
|
* @param {number} location - Base location in degrees.
|
|
@@ -269,20 +259,16 @@ export interface BillboardCenterParams {
|
|
|
269
259
|
baseMetersPerPixel: number;
|
|
270
260
|
/** User-provided scaling multiplier. */
|
|
271
261
|
imageScale: number;
|
|
272
|
-
/**
|
|
273
|
-
|
|
262
|
+
/** Distance-dependent scale multiplier. */
|
|
263
|
+
distanceScaleFactor: number;
|
|
274
264
|
/** Pixels per meter after perspective adjustments. */
|
|
275
265
|
effectivePixelsPerMeter: number;
|
|
276
|
-
/** Lower clamp for the sprite's largest pixel dimension. */
|
|
277
|
-
spriteMinPixel: number;
|
|
278
|
-
/** Upper clamp for the sprite's largest pixel dimension. */
|
|
279
|
-
spriteMaxPixel: number;
|
|
280
266
|
/** Aggregate rotation applied to the sprite in degrees. */
|
|
281
267
|
totalRotateDeg: number;
|
|
282
268
|
/** Anchor definition normalized between -1 and 1. */
|
|
283
269
|
anchor?: Readonly<SpriteAnchor>;
|
|
284
270
|
/** Offset definition applied in meters/deg. */
|
|
285
|
-
offset?:
|
|
271
|
+
offset?: OffsetInput;
|
|
286
272
|
}
|
|
287
273
|
/**
|
|
288
274
|
* Resolved properties describing the billboard center and derived dimensions.
|
|
@@ -290,13 +276,13 @@ export interface BillboardCenterParams {
|
|
|
290
276
|
export interface BillboardCenterResult {
|
|
291
277
|
/** Screen-space coordinate after offset adjustments. */
|
|
292
278
|
center: SpriteScreenPoint;
|
|
293
|
-
/** Half of the
|
|
279
|
+
/** Half of the pixel width. */
|
|
294
280
|
halfWidth: number;
|
|
295
|
-
/** Half of the
|
|
281
|
+
/** Half of the pixel height. */
|
|
296
282
|
halfHeight: number;
|
|
297
|
-
/** Full pixel width after scaling
|
|
283
|
+
/** Full pixel width after scaling. */
|
|
298
284
|
pixelWidth: number;
|
|
299
|
-
/** Full pixel height after scaling
|
|
285
|
+
/** Full pixel height after scaling. */
|
|
300
286
|
pixelHeight: number;
|
|
301
287
|
/** Pixel delta caused by anchor rotation. */
|
|
302
288
|
anchorShift: SpritePoint;
|
|
@@ -365,20 +351,14 @@ export interface SurfaceCenterParams {
|
|
|
365
351
|
baseMetersPerPixel: number;
|
|
366
352
|
/** User-provided scaling multiplier. */
|
|
367
353
|
imageScale: number;
|
|
368
|
-
/**
|
|
369
|
-
|
|
354
|
+
/** Distance-dependent scale multiplier. */
|
|
355
|
+
distanceScaleFactor: number;
|
|
370
356
|
/** Rotation applied to the sprite in degrees. */
|
|
371
357
|
totalRotateDeg: number;
|
|
372
358
|
/** Anchor definition normalized between -1 and 1. */
|
|
373
359
|
anchor?: Readonly<SpriteAnchor>;
|
|
374
360
|
/** Offset definition applied in meters/deg. */
|
|
375
|
-
offset?:
|
|
376
|
-
/** Conversion rate from meters to on-screen pixels. */
|
|
377
|
-
effectivePixelsPerMeter?: number;
|
|
378
|
-
/** Lower clamp for the sprite's largest pixel dimension. */
|
|
379
|
-
spriteMinPixel?: number;
|
|
380
|
-
/** Upper clamp for the sprite's largest pixel dimension. */
|
|
381
|
-
spriteMaxPixel?: number;
|
|
361
|
+
offset?: OffsetInput;
|
|
382
362
|
/** Projection function mapping longitude/latitude to screen space. */
|
|
383
363
|
project?: ProjectLngLatFn;
|
|
384
364
|
/** Projection into clip space when available. */
|
package/dist/utils/utils.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* name: maplibre-gl-layers
|
|
3
|
-
* version: 0.
|
|
3
|
+
* version: 0.19.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:
|
|
8
|
+
* git.commit.hash: 7bc93c11d7855dedb8d60f140af4e413252c32a7
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import { ImageHandleBufferController, IdHandler, RenderTargetBucketBuffers, RenderTargetEntryLike, SpriteOriginReference } from '../internalTypes';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* name: maplibre-gl-layers
|
|
3
|
-
* version: 0.
|
|
3
|
+
* version: 0.19.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:
|
|
8
|
+
* git.commit.hash: 7bc93c11d7855dedb8d60f140af4e413252c32a7
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
declare const _default: {
|
package/package.json
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"git": {
|
|
3
3
|
"tags": [
|
|
4
|
-
"0.
|
|
4
|
+
"0.19.0"
|
|
5
5
|
],
|
|
6
6
|
"branches": [
|
|
7
7
|
"main"
|
|
8
8
|
],
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.19.0",
|
|
10
10
|
"commit": {
|
|
11
|
-
"hash": "
|
|
12
|
-
"shortHash": "
|
|
13
|
-
"date": "2025-11-
|
|
11
|
+
"hash": "7bc93c11d7855dedb8d60f140af4e413252c32a7",
|
|
12
|
+
"shortHash": "7bc93c1",
|
|
13
|
+
"date": "2025-11-23T22:35:51+09:00Z",
|
|
14
14
|
"message": "Merge branch 'develop'"
|
|
15
15
|
}
|
|
16
16
|
},
|
|
17
|
-
"version": "0.
|
|
17
|
+
"version": "0.19.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",
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* name: maplibre-gl-layers
|
|
3
|
-
* version: 0.17.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: 9fe9aa30db6602d13643e32c94af39ae2b26b082
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import { SpriteInterpolationOptions, SpriteLocation } from '../types';
|
|
12
|
-
import { SpriteInterpolationEvaluationParams, SpriteInterpolationEvaluationResult, SpriteInterpolationState } from '../internalTypes';
|
|
13
|
-
/**
|
|
14
|
-
* Parameters required to create a fresh interpolation state for the next animation segment.
|
|
15
|
-
*/
|
|
16
|
-
export interface CreateInterpolationStateParams {
|
|
17
|
-
/** Sprite location currently rendered on screen. */
|
|
18
|
-
currentLocation: SpriteLocation;
|
|
19
|
-
/** Previously commanded target, used for feedforward extrapolation. */
|
|
20
|
-
lastCommandLocation?: SpriteLocation;
|
|
21
|
-
/** Upcoming commanded target that the sprite should reach. */
|
|
22
|
-
nextCommandLocation: SpriteLocation;
|
|
23
|
-
/** Raw interpolation options supplied by the caller. */
|
|
24
|
-
options: SpriteInterpolationOptions;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Result of preparing interpolation state, including a flag denoting whether any lerp is needed.
|
|
28
|
-
*/
|
|
29
|
-
export interface CreateInterpolationStateResult {
|
|
30
|
-
/** Prepared interpolation state ready for evaluation. */
|
|
31
|
-
readonly state: SpriteInterpolationState<SpriteLocation>;
|
|
32
|
-
/** Indicates whether lerping is needed or an immediate snap is sufficient. */
|
|
33
|
-
readonly requiresInterpolation: boolean;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Creates interpolation state for the next sprite movement and signals if interpolation is necessary.
|
|
37
|
-
*
|
|
38
|
-
* @param params - The context needed to build interpolation state, including locations and configuration.
|
|
39
|
-
* @returns The prepared state alongside a boolean indicating whether animation should run.
|
|
40
|
-
*/
|
|
41
|
-
export declare const createInterpolationState: (params: CreateInterpolationStateParams) => CreateInterpolationStateResult;
|
|
42
|
-
/**
|
|
43
|
-
* Evaluates an interpolation state at a specific point in time and returns the intermediate location.
|
|
44
|
-
*
|
|
45
|
-
* @param params - The interpolation state and the reference timestamp for evaluation.
|
|
46
|
-
* @returns The lerped location, whether the interpolation has finished, and the effective start time.
|
|
47
|
-
*/
|
|
48
|
-
export declare const evaluateInterpolation: (params: SpriteInterpolationEvaluationParams) => SpriteInterpolationEvaluationResult;
|