Encoded Grid Vector Tile Source
Sidecar vector source for gridded/symbol layers backed by XweatherEncodedTileSource.
Mapbox requests geometry per tile via requestTile; features are placed on a global Web Mercator world-pixel grid (512×2^zoom) for even screen spacing. Wind uses G/B u/v (atan2(u,-v); sampleFieldsFromEncodedRgb). Maritime *_dir.fill (instancedQuadMonochromeWhite) uses blue-only scalar degrees like JS EXPRESSION_ANGLE (norm * 360 - 180, wrapped to 0–360°).
Constructors
Properties
When set (GL stencil mask mode), invoked on the tile decode thread after each successful MVT parse with the same TileCoord / coord-hash key used by encoded raster meshes.
High-level source family (raster, encoded, vector, …).
com.xweather.mapsgl.map.MapController.mapSessionId that owns in-flight / ready tile bookkeeping.
Mapbox symbol overlays need timeline meld invalidation so custom-geometry tiles refetch blended icons. Instanced GL wind barbs meld on the GPU (com.xweather.mapsgl.anim.Timeline.dataMeld) and skip this work.
Optional interval filter for time-series products; drives tile requests with timeline state.
Alias for DataSource.kind (matches JS naming type).
Functions
Register a layer that should receive updates when this source loads or changes.
Invoked on the tile decode thread after each successful parse, after glStencilMaskTileListener.
Ensures parseVectorTile includes sourceLayerTag in decoded MVT layers (refcounted).
Used by prepareTileRequest() to increment or decremnet the time and reformate it for sources with time offets
Rebuilds the CPU palette used for instanced wind barb/arrow RGB when SamplePaint.colorScale or SamplePaint.encodedScalarNormMax changes. Safe to call when reusing a cached gridVector sidecar source.
Packed instanced wind barbs: endpoint phase A and B only (no Timeline.dataMeld in sampling). Matches encoded raster layers: the GPU applies dataMeld each frame so timeline crossfade stays smooth without rebuilding this buffer at playback frame rate.
Returns the metadata for the source, which can be loaded from a remote source.
Data inspector for maritime *_dir.fill: bilinear sample at lon/latDeg using the same placement zoom as buildInstancedWindBufferDualPhase (stablePlacementZoomInt\(mapZoom\)), then vector-blend phases like the GPU. Nearest-neighbor tile bytes in EncodedTileLayer do not match instanced sampling.
Plain ISO-8601 for URL path {time} segments (encoded tile GET). Cache keys and POST validTimes still use bracketed ["…"] strings.
convert from \"2025-04-22T03:49:31Z\" to 20250422030000
Timeline-only invalidation: keep cached placement geometry, refresh only sampled icon properties.
Same feature generation as the Mapbox sidecar path, merged for OpenGL instanced drawing (no Mapbox vector layer).
Unregister a layer previously added with addConsumer.
JS GridPaint.spacing is in logical px; instanced gridded placement uses authored × density × 0.5 (same density convention as com.xweather.mapsgl.renderers.GridLayerRenderer icon sizing). Safe when reusing a cached sidecar: bumps spacing and invalidates placement caches when the effective value changes.