Symbols along lines
Development SDK 0.3.0-dev.e026e43b (core e026e43b6a3c83458a3d8bc3230e62dcfd0d3a96) passes the same 54-check,15-phase script on Native and browser main thread/Worker at DPR1/2. The final boundary regression CPU passes; the original comprehensive0.64-second GPU case is explicitly historical evidence for76fdb46e. Six current public variants provide actual GPU evidence for the seam fix. Windows/macOS, phones, mobile GIS/iOS and formal release remain pending.
Parameter names follow the MapLibre Symbol specification; SqsMap independently implements its engine and placement. Original GeoJSON/MVT LineString/MultiLineString parts work in shared planar Mercator with zero pitch/roll and no terrain/visible extrusion. Probe commonLineSymbols. Existing legal media layer composition works alongside labels; callers supply layer UI.
| Parameter | Default and behavior |
|---|---|
| symbol-placement | point; line repeats, line-center places once per part |
| symbol-spacing | 250 CSS pixels, finite and at least1 |
| text-max-angle | 45 degrees, range0..180 |
| text-keep-upright / icon-keep-upright | true / false |
| text-rotation-alignment | auto/map follows individual tangents; viewport lays out the whole group horizontally; viewport-glyph follows the path with viewport-oriented axes |
| icon-rotation-alignment | auto/map/viewport; no icon viewport-glyph extension |
Glyph positions/advances and local tangents drive real per-glyph curved geometry. Short/acute paths apply joint optional rules, so a failed required text component cannot leave its icon. PBF, RGBA/SDF icons, format, fitting, sorting, collision and supported expressions are reused. Placement is uniform through global/lexical/integer-zoom expressions; feature-dependent placement rejects. Explicit multiline labels reject and road labels do not automatically wrap. Actual quads and original feature/part/source identity are shared by layout, collision and queries; generated anchors never modify source data.
Joint limits are4096 paths, one million original vertices,16384 point-plus-line anchors,65536 actual text/icon/fit quads and64MiB shared geometry. Original source/cache/atlas/collision quotas remain, with input, live and candidate copies accounted. Template and actual-quad radial extent relative to an anchor is limited to1024 CSS pixels. Unknown MVT coverage expands by that bound while retaining64 visible tiles and32 pending requests per source. Limits fail atomically with the previous map and resource queues retained; output is never partially truncated.
MVT placement uses original-part arc lengths and half-open target ownership, preserving warm-parent fallback, exact-child replacement and world copies. An original-world anchor is classified once: the real x=0 regression covers floating-point round trips previously discarding both owners. Cross-tile geometry stitching, a globally consistent repetition phase, complex shaping and tilted/globe/terrain road labels are not claimed. Invalid resolved line paint rejects explicitly; old point behavior and legal PBF fallback remain. A genuinely oversized atlas candidate rejects atomically.
The complete acceptance script includes original PBF/RGBA data and five MVT tiles. Independent blue-glyph connected components and axes are checked against original roads through curves, viewport-glyph, repetition/reversal/acute rejection, collision, original IDs, source updates/rejected-frame preservation, media ordering and genuinely held child requests/parent replacement. Its barriers need the local3307 acceptance server. The complete HTML/CSS/JavaScript example runs over HTTP from SDK/web; both button handlers and original-ID click handling are in source, without acceptance barriers.