{"id":"6a3e9f3acabf74f3ccde455e","title":"2026 06 26 Issue 102","path":"how-to/committee/release-notes/2026-06-26-issue-102","contentMarkdown":"# 26-Jun-2026 — reliable shapefile import, point markers, full-resolution GPX [ref #102](https://github.com/nbarrett/ngx-ramblers/issues/102)\n\n## [build 721](https://github.com/nbarrett/ngx-ramblers/actions/runs/28248078096) — [commit 08e510e](https://github.com/nbarrett/ngx-ramblers/commit/08e510eb355480e612dfe065360634a4f67a5c08)\n\n_____\n\n## Import\n\n- **Reliable shapefile reads.** Read `.shp`/`.dbf` into byte buffers before `shapefile.open()`, so import works in the deployed runtime (path-based reads were failing with \"Cannot create a Buffer larger than N bytes\").\n- **Point geometry as markers.** Point-geometry shapefiles import as map markers (new `MapRouteImportMarker`) instead of degenerate single-point tracks. Point-only groups skip GPX/route creation, and the edit component appends the points to `map.markers`.\n- **Numbered-point labels.** `featureName` now reads the \"Text\" attribute used by the numbered-point files.\n- **Full-resolution routes.** Only decimate tracks over 2000 points; the previous 5% step decimation crushed every route to ~20 points.\n\n## Rendering\n\n- **Numbered pins.** `numberedMarkerIcon` draws short-labelled markers and GPX waypoints as numbered teardrop pins.\n- **Sensible fit.** The map fits to the route bounds (markers used only as a fallback when there is no route), so a stray/far marker no longer zooms the map right out.\n- **No accidental viewport overwrite.** `captureMapView` ignores `moveend`/`zoomend` fired during auto-fit/config-apply (`suppressViewportHandler`), so the editor no longer overwrites an explicit `mapCenter`/`mapZoom` with the auto-fit zoom or silently flips `autoFitBounds` off.","contentHtml":"<h1>26-Jun-2026 — reliable shapefile import, point markers, full-resolution GPX <a href=\"https://github.com/nbarrett/ngx-ramblers/issues/102\">ref #102</a></h1>\n<h2><a href=\"https://github.com/nbarrett/ngx-ramblers/actions/runs/28248078096\">build 721</a> — <a href=\"https://github.com/nbarrett/ngx-ramblers/commit/08e510eb355480e612dfe065360634a4f67a5c08\">commit 08e510e</a></h2>\n<hr>\n<h2>Import</h2>\n<ul>\n<li><strong>Reliable shapefile reads.</strong> Read <code>.shp</code>/<code>.dbf</code> into byte buffers before <code>shapefile.open()</code>, so import works in the deployed runtime (path-based reads were failing with &quot;Cannot create a Buffer larger than N bytes&quot;).</li>\n<li><strong>Point geometry as markers.</strong> Point-geometry shapefiles import as map markers (new <code>MapRouteImportMarker</code>) instead of degenerate single-point tracks. Point-only groups skip GPX/route creation, and the edit component appends the points to <code>map.markers</code>.</li>\n<li><strong>Numbered-point labels.</strong> <code>featureName</code> now reads the &quot;Text&quot; attribute used by the numbered-point files.</li>\n<li><strong>Full-resolution routes.</strong> Only decimate tracks over 2000 points; the previous 5% step decimation crushed every route to ~20 points.</li>\n</ul>\n<h2>Rendering</h2>\n<ul>\n<li><strong>Numbered pins.</strong> <code>numberedMarkerIcon</code> draws short-labelled markers and GPX waypoints as numbered teardrop pins.</li>\n<li><strong>Sensible fit.</strong> The map fits to the route bounds (markers used only as a fallback when there is no route), so a stray/far marker no longer zooms the map right out.</li>\n<li><strong>No accidental viewport overwrite.</strong> <code>captureMapView</code> ignores <code>moveend</code>/<code>zoomend</code> fired during auto-fit/config-apply (<code>suppressViewportHandler</code>), so the editor no longer overwrites an explicit <code>mapCenter</code>/<code>mapZoom</code> with the auto-fit zoom or silently flips <code>autoFitBounds</code> off.</li>\n</ul>\n"}