{"id":23763685,"url":"https://github.com/tomashubelbauer/osm-vector-map","last_synced_at":"2025-07-29T15:16:27.607Z","repository":{"id":107986223,"uuid":"191762659","full_name":"TomasHubelbauer/osm-vector-map","owner":"TomasHubelbauer","description":"Rendering vector tiles generated from OSM data by OpenMapTiles","archived":false,"fork":false,"pushed_at":"2022-04-14T21:04:46.000Z","size":63568,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-01T16:40:05.346Z","etag":null,"topics":["gis","open-street-map","osm","vector-map"],"latest_commit_sha":null,"homepage":"https://tomashubelbauer.github.io/osm-vector-map","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TomasHubelbauer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-06-13T12:53:08.000Z","updated_at":"2022-04-16T13:39:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"e45f80b5-896b-400d-9b83-6e8ae4edb192","html_url":"https://github.com/TomasHubelbauer/osm-vector-map","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/TomasHubelbauer/osm-vector-map","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomasHubelbauer%2Fosm-vector-map","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomasHubelbauer%2Fosm-vector-map/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomasHubelbauer%2Fosm-vector-map/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomasHubelbauer%2Fosm-vector-map/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TomasHubelbauer","download_url":"https://codeload.github.com/TomasHubelbauer/osm-vector-map/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomasHubelbauer%2Fosm-vector-map/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267707120,"owners_count":24131329,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-29T02:00:12.549Z","response_time":2574,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gis","open-street-map","osm","vector-map"],"created_at":"2024-12-31T22:13:17.956Z","updated_at":"2025-07-29T15:16:27.553Z","avatar_url":"https://github.com/TomasHubelbauer.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OSM Vector Map\r\n\r\n[**DEMO**](https://tomashubelbauer.github.io/osm-vector-map)\r\n\r\nIn this repository I prototype a vector map tile rendered. I am using an extract\r\nfrom the OSM maps provided by OpenMapTiles. I am using the freely available\r\nsnapshot of Prague from 2017-07-03.\r\n\r\nhttps://openmaptiles.com/downloads/dataset/osm/europe/czech-republic/prague\r\n\r\nMBTILES file format is a SQLite database with a specific schema, documented here:\r\n\r\nhttps://github.com/mapbox/mbtiles-spec\r\n\r\nI am working on a JavaScript SQLite database library found here:\r\n\r\nhttps://github.com/TomasHubelbauer/sqlite-javascript\r\n\r\nUnfortunately it is not possible to use WebSQL to access the database, because\r\nit is barely supported (works in Chrome and Safari though) and is not able to\r\nwork off a given file.\r\n\r\nThe vector tiles are stored in the ProtoBuf format in the database table called\r\n`images`. This is true of the particular database included in this repository,\r\nbut the MBTILES format also supports raster tiles. To check what sort of tiles\r\nyour MBTILES database contains, check the `metadata` table, the `format` column\r\nin particular.\r\n\r\nThe vector tile database file is loaded upon user gesture and with loading\r\nindicator, because it is really big (70 MB).\r\n\r\nI am toying around with an idea of using a service worker to cache the file when\r\nthe user clicks the download button and the application determining whether it\r\nwas already downloaded or not by inspecting the `caches` object or issuing a\r\nrequest with some marker (header/fragment/query) which would tell the worker to\r\nactually download if present or fail to indicate not having been cached yet if\r\nnot present.\r\n\r\nThe worker might break the download indication (worried it will split the\r\npipeline into two steps - worker downloads and then the page downloads from the\r\ncache) so if that's the case, we can try ranged fetch to preserve the ability to\r\ndownload with indication as GitHub Pages support ranged requests.\r\n\r\n## To-Do\r\n\r\n### Implement custom protobuf wire format parser\r\n\r\nBecause the MapBox one sucks and there don't seem to be others not requiring the schema\r\n\r\n- https://github.com/mapbox/pbf\r\n- Validate with https://protogen.marcgravell.com/decode\r\n  - https://github.com/protobuf-net/protobuf-net/blob/master/src/protobuf-net/ProtoReader.cs\r\n\r\n### Check out Qwant maps, they have a public vector tile server\r\n\r\n- https://www.qwant.com/maps/tiles/ozpoi/14/8853/5549.pbf\r\n- Consider merging this with my osm-bitmap-map and allow both bitmap and vector servers!\r\n- https://betterweb.qwant.com/qwant-maps-a-open-and-privacy-focused-map\r\n- https://www.qwant.com/maps\r\n\r\n### Check out the Mapy.cz vector tile server (might be just labels?)\r\n\r\n- https://mapserver.mapy.cz/bing/11-1116-708 this is alternative rasters below? This one is used by the app\r\n  - https://mapserver.mapy.cz/base-m/8-138-87\r\n  - https://mapserver.mapy.cz/hybrid-base-m/8-139-86\r\n  - https://vectmap.mapy.cz/map/online/17/0/data/12-2232-1416.br4 vector tile\r\n  - https://vectmap.mapy.cz/poi/online/v5/15-2231-1416.br4?zl=11\u0026zh=14\u0026al=en\u0026sl=en POI data\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomashubelbauer%2Fosm-vector-map","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftomashubelbauer%2Fosm-vector-map","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomashubelbauer%2Fosm-vector-map/lists"}