Protomaps is a project by Brandon Liu that offers open source map tooling and the single-file PMTiles format for serving maps.
Commenters recommend it as a cheaper way to host maps than Google or Mapbox, citing single-file range requests and easy self-hosted vector tiles.
If you are looking for maps themselves (a la Google Maps) I highly recommend checking out Protomaps [0]. It provides a single file (PMTile format) that contains all the map data and you can request ranges from the single file to get the required vector data you need for a given area/zoom.
So you can setup something like the following:
S3 (host the myfile.pmtiles) <- Lambda (takes the x/y/z from the path and requests the correct range) <- Cloudfront cache tile response
Then you can setup tiles.mydomain.com (or use the cloudfront domain directly) and then use Leaflet or similar on the frontend to fetch/render the tiles. For Leaflet you use the protomaps plugin/lib and give it a url like "https://tiles.yourdomain.com/20230408/
{z}/
{x}/
{y}.mvt" where "20230408" maps to "20230408.pmtiles" in your S3 bucket. Now I can drop new pmtiles files into that bucket and update my clients to use the new source. And since the tiles are in vector format you can theme them however you want in the client which is neat. Lastly you don't have to use the 100+GB whole-earth tileset. You can use a tool [1] (provided by the same guy) to download a dataset for just a given geographical region.
The .pmtiles file is a little over 100GB but the whole setup took me only an hour or two max to get running and will cost way less than Google Maps to run.
[0] https://protomaps.com/
[1] https://app.protomaps.com/downloads/small_map
QGIS is a gold standard to verify you tools works fine and data is in a correct format ...
if you are a web based first, you have even better options to build and extend
kepler, protomaps, maplibre-gl-js
https://kepler.gl
https://protomaps.com
https://github.com/maplibre/maplibre-gl-js
the rest can be found on great Qiusheng Wu’s (aka @giswqs) Geo/GeoAI tutorials channels and repos
https://www.youtube.com/@giswqs/videos
https://x.com/giswqs
but what really amazed me is how geo spatial support is growing inside of databases recently
https://duckdb.org/docs/stable/core_extensions/spatial/overview.html
all mighty postgis https://postgis.net/docs/manual-3.5/postgis_cheatsheet-en.html
https://sedona.apache.org/latest/
https://geoparquet.org/releases/v1.0.0/
and many unlocked dataset compare to other industries
https://docs.overturemaps.org/getting-data/duckdb/
https://www.openstreetmap.org/
https://hub.arcgis.com/search
lot great webtools are comming for sure and you still can be 100% of most of your geospatial pipeline
p.s. want to extend the above list with self-hosted tools with minimum or none dependencies on paid APIs, and recommendations are greatly appreciated
I did actually! For my particular source dataset it was far easier just to lean on the plain old GeoTiff format since that's what my source data was already formatted in and my testing of the client-side on-the-fly tiling using range queries and fast-png for encoding resulted in close to par performance with 0 increase in hosting costs and 0 headache in building custom pipelines to encode the cloud-optimized versions. Basically, I'm lazy, I'm sure it's the "correct" answer for other use-cases
I also have been digging pretty extensively into protomaps though for some newer non-GeoTiff datasets I'm in the process of pulling in, in my opinion it's the future for this space - https://protomaps.com/
The barriers to adopting vector-everywhere are social and commercial, not technical.
There are a couple great public raster services like osm.org's default style and http://maps.stamen.com. These are 100% free to use, so they get used everywhere, but incur significant expense to the organizations running (paying) for them.
There aren't equivalent solutions in vector-land yet... I wrote a bit about this previously: https://protomaps.com/blog/free-tier-maps
This would be quite convenient when dealing with MBtiles files hosted on S3 or similar. There are efforts such as PMTiles[1] that let us use HTTP Range query to retrieve tiles directly from S3, but we still have to convert MBTiles to PMTiles first.
More importantly that OSM is considering providing MBTiles directly (besides PBF)[2].
[1]: https://protomaps.com/docs/pmtiles/
[2]: https://github.com/openstreetmap/operations/issues/565
Vector map of the whole Earth in PMTiles format is only ~65GB[1] and doesn't need any server or database - it's just a static file which you can host wherever you want.
bdon (author of PMTiles) already commented on this thread. I recommend taking a look at https://protomaps.com/docs - compared to this, raster tile servers sound like ancient technology.
[1]: https://app.protomaps.com/store/planet-z14