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").
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.
Numbered-point labels.featureName now reads the "Text" attribute used by the numbered-point files.
Full-resolution routes. Only decimate tracks over 2000 points; the previous 5% step decimation crushed every route to ~20 points.
Rendering
Numbered pins.numberedMarkerIcon draws short-labelled markers and GPX waypoints as numbered teardrop pins.
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.
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.