Tiled web map
A tiled web map, slippy map[1] (in OpenStreetMap terminology) or tile map is a map displayed in a web browser by seamlessly joining dozens of individually requested image or vector data files. It is the most popular way to display and navigate maps, replacing other methods such as Web Map Service (WMS) which typically display a single large image, with arrow buttons to navigate to nearby areas. Google Maps was one of the first major mapping sites to use this technique. The first tiled web maps used raster tiles, before the emergence of vector tiles.
There are several advantages to tiled maps. Each time the user pans, most of the tiles are still relevant, and can be kept displayed, while new tiles are fetched. This greatly improves the user experience, compared to fetching a single map image for the whole viewport. It also allows individual tiles to be pre-computed, a task easy to parallelize. Also, displaying rendered images served from a web server is less computationally demanding than rendering images in the browser, a benefit over technologies such as Web Feature Service (WFS). While many map tiles are in raster format (a bitmap file such as PNG or JPG), the number of suppliers of vector tiles is growing. Vector tiles are rendered by the client browser, which can thus add a custom style to the map. Vector map tiles may also be rotated separately from any text overlay so that the text remains readable.
Defining a tiled web map
Properties of tiled web maps that require convention or standards include the size of tiles, the numbering of zoom levels, the projection to use, the way individual tiles are numbered or otherwise identified, and the method for requesting them.
Most tiled web maps follow certain Google Maps conventions:
- Tiles are 256x256 pixels
- At the outer most zoom level, 0, the entire world can be rendered in a single map tile.
- Each zoom level doubles in both dimensions, so a single tile is replaced by 4 tiles when zooming in. This means that about 22 zoom levels are sufficient for most practical purposes.
- The Web Mercator projection is used, with latitude limits of around 85 degrees.
The de facto OpenStreetMap standard, known as Slippy Map Tilenames[2] or XYZ,[3] follows these and adds more:
- An X and Y numbering scheme
- PNG images for tiles
- Images are served through a Web server, with a URL like
http://.../Z/X/Y.png
, where Z is the zoom level, and X and Y identify the tile.
Tile numbering schemes
There are three main numbering schemes in use:[4]
- Google Maps / OpenStreetMap: (0 to 2zoom-1, 0 to 2zoom-1) for the range (−180, +85.0511) - (+180, −85.0511)
- Tile Map Service: (0 to 2zoom-1, 2zoom-1 to 0) for the range (−180, +85.0511) - (+180, −85.0511). (That is, the same as the previous with the Y value flipped.)
- QuadTrees, used by Microsoft.
Standards
Several standards exist:
- Tile Map Service: an early standard supported by OpenLayers. One difference is the y axis is positive northwards in TMS, and southwards in OpenStreetMap.
- Web Map Tile Service: a more recent Open Geospatial Consortium (OGC) standard.
- The de facto XYZ standard referred to above.
- TileJSON: a lightweight JSON description of all the parameters associated with a web map, created by Mapbox.[5]
- Bing Maps Tile System,[6] using Quadkeys for addressing.
Client libraries
To display a tiled map in a browser usually requires the support of a web mapping framework. This framework handles the retrieval of tiles, display, caching, and user navigation. Popular frameworks for tiled maps include Google Maps API, OpenLayers and Leaflet.
References
- "OpenStreetMap wiki".
- "Slippy map tilenames - OpenStreetMap Wiki". wiki.openstreetmap.org. Retrieved 2015-06-10.
- "tmcw/xyz_vs_tms.md". GitHub Gists. Retrieved 2015-06-10.
- "Tiles à la Google Maps: Coordinates, Tile Bounds and Projection - conversion to EPSG:900913 (EPSG:3785) and EPSG:4326 (WGS84)". www.maptiler.com. Retrieved 2022-03-01.
- "An Open Platform: TileJSON". mapbox.com. Retrieved 2017-01-05.
- "Bing Maps Tile System". msdn.microsoft.com. Retrieved 2015-06-10.