TXTWRK LOCAL MAPLIBRE BUNDLE ============================ UPLOAD ------ Extract this ZIP over your TXTWRK web root. It contains: /system/core/obj/maps/txtwrk.maps.js /system/core/obj/maps/install_maplibre.php /system/core/obj/maps/lib/ ONE-TIME INSTALL ---------------- Visit: https://txtwrk.com/system/core/obj/maps/install_maplibre.php It downloads MapLibre GL JS 5.12.0 once and creates: /system/core/obj/maps/lib/maplibre-gl.js /system/core/obj/maps/lib/maplibre-gl.css When both lines say [OK], DELETE: /system/core/obj/maps/install_maplibre.php Then Ctrl+F5 your map page. RUNTIME ------- txtwrk.maps.js now loads: /system/core/obj/maps/lib/maplibre-gl.js /system/core/obj/maps/lib/maplibre-gl.css There is no UNPKG/CDN browser dependency after installation. MAP DATA -------- TXTWRK's existing map.php/cache.php system remains responsible for: - OpenFreeMap style JSON - vector tiles - building geometry / height data used for 3D extrusions - glyph PBFs - sprites - reverse-geocode cache A fully warmed area can therefore render using only TXTWRK-hosted resources. Cold/missing/expired resources can still cause TXTWRK's SERVER to fetch OpenFreeMap/Nominatim upstream. To guarantee no upstream dependency even for uncached areas, self-host the complete tile/geocoder datasets as a later step. TERRAIN ------- Current 3D buildings are vector extrusion. True terrain/elevation requires a separate DEM dataset. That is not automatically included merely by caching OpenFreeMap vector tiles.