You're not wrong. But not all maps are tile based. A layer can come from a tile server, yes, or local cached data served with the web page, or geojson, or bitmaps, or algorithmic shapes, or geo databases, etc.
OL is much more than a rendering library, it understands different geospatial input formats (raster and vector, tiled or not) and dynamically reprojects them to the same map projection, and lets you overlay UI elements (points of interest, polygons, lines, animations, etc.) or blend layers together (backgrounds, base maps, hill shades, etc.)
That much is definitely true and it's indeed interesting to see the many approaches to maps!
Now, personally, I'd still go for using a tile server in most cases in apps where the map functionality isn't the main part of the app, because of how simple that approach is, as well as how friendly to battery life those maps can be.
Of course, if maps are front and center to your app, then things probably change somewhat!
Though i do believe that OP was also particularly asking about how to host their own solution, presumably on a VPS or another server somewhere. In that regard, it's interesting to see the options out there, in part because there didn't used to be that many - sure, PostGIS is perfect for processing and storing geospatial data, yet when it comes to the display of maps, that niche of the industry is a little bit more new!
Exactly. The best stack to use would ideally depend on your particular use case (and constraints, of course).
Tiles make sense if you have a large area of interest (a country, a continent, the world). But in many cases your users would be better served by one of the big providers instead (Google, Mapbox, Here.com, Bing, OpenStreetMap) because of their superior infrastructure. If I got a dime for every time some local government GIS site self-hosted on ESRI bloatware slowed to a crawl or just plain broke... (though, to be fair, the ESRI web viewers are getting rapidly better. there's just a lot of legacy crap from old versions still in the wild)
For smaller areas of interest (say, a city map, a campus map, an indoor building map) tiles are not only excessively complicated but also produce a worse UX because they don't allow for seamless zooming & panning. If your geometry can be easily described in a few hundred lines, the whole thing can just be served as a few kB geojson attached to the page and rendered dynamically by openlayers or leaflet. With a modern phone or computer, that rendering happens way quicker than it would take to load map tiles over the phone, and once it's all loaded the rest of the interactions are instant. You can even make it a progressive web app for offline use if you wanted to (but does anyone actually do that?)
Tiles were a 90s/early 2000s solution to the infrastructure at the time, where servers were much more powerful than clients and Javascript was still in its infancy. These days a lot can be done on the clientside and arguably should be, except in cases where the data to be transmitted would be huge due to complex geometries or intricate graphics (e.g. for clients without a gfx card, rendering 3D textured maps on the fly a la Google Earth may be difficult... in that case prerendering them into tiles on a server makes sense)
In any case, real-world maps typically combine approaches. They could use a tiled basemap as a background, overlay first-party bitmaps onto them (like a pretty map ripped from the print prochure), then add geojson POIs on top of them.
This is one we built on openlayers using hybrid data sources, including a tiled background from OSM: https://map.fieldmuseum.org/
> This is one we built on openlayers using hybrid data sources, including a tiled background from OSM: https://map.fieldmuseum.org/
That's a really cool map and makes me hopeful for there eventually being more indoors maps! Also, the design itself seems simple, approachable and the illustrations make it more humane!
That said, the performance leaves something to be desired:
- tested it on a desktop with Firefox (93) on a Ryzen 1200 and RX 570, got anywhere between 15-30 fps, usable but not smooth
- tested it on a mobile Android budget phone (Ulefone Armor X7 Pro) with a Mediatek chip, got somewhere between 5-10 fps
- seems like it's related to rendering the building, because panning away so it's offscreen improves the performance
- this appears to be confirmed by also zooming out so less details are shown, in which case the performance improves
That's not probably an issue that actually needs addressing (newer hardware would perform better, the one mentioned performs passably), however there's definitely something to be said about how things will probably get better in this regard in the coming years (Mapbox alone has made plentiful advances) and how mixing different data sources or technologies may incur certain performance penalties until then, which may or may not actually be a concern, depending on the target audience.
OL is much more than a rendering library, it understands different geospatial input formats (raster and vector, tiled or not) and dynamically reprojects them to the same map projection, and lets you overlay UI elements (points of interest, polygons, lines, animations, etc.) or blend layers together (backgrounds, base maps, hill shades, etc.)
Check out the examples: https://openlayers.org/en/latest/examples/