A tilted view has no zoom level
Every essay on this ladder assumes the map lies flat on the screen. A screen map is a pyramid of tiles builds the scheme; zoom is a ladder shows the rungs a factor of two apart; the scale of a screen map is not one number shows the printed scale being true along one line. All three take for granted that the picture on the screen is the Mercator plane, at one scale, seen from directly above.
Since about 2015 it routinely is not. Web maps tilt, and a tilted map is not a map of the sphere at all — it is a photograph of a map. What the pyramid was designed to serve has changed underneath it.
The camera, and the identity that pins it
The model is the one the renderers use: a pinhole at height h above the Mercator plane, a vertical field of view, and a pitch measured from straight down. For a screen row at y pixels above the centre, with α = atan(y/f) the angle off the camera’s axis and θ the pitch, the ground per pixel is
both in plane units, and both equal to one at the centre of an untilted view when h is the focal length.
The check that the model is a camera is the case where the answer is known in advance. A pinhole looking straight down at a plane is a similarity, so at zero pitch every pixel is worth exactly the same ground, and the frame spans no range of zoom levels at all. That identity had to be measured rather than assumed: the first version of the across-screen scale was sec(θ + α), which is the ground per unit length along the ray rather than per screen pixel, and it reported an untilted view varying by five per cent from the middle of the screen to the top.
Up the screen
At zero pitch the curve is flat at 23.8 metres per pixel, which is what zoom 12 at this latitude means. At 60° the near edge of the frame is 39 metres per pixel and the far edge is 479 — a factor of 12.2 — and the curve between them is not linear but the secant squared of the tilt.
A zoom level is a promise about what one pixel is worth on the ground. The flat frame keeps it everywhere. The tilted frame keeps it on one row.
What the pyramid is being asked for
Converting the resolution into the level that would supply it exactly gives the demand, and it spans 3.60 levels up the frame and 1.80 across it. The pyramid’s rungs are one level apart, so no single level is within half a rung of what most of the frame wants.
There is a second and worse difficulty in the same figure: the two curves are not the same curve. The demand across the screen and the demand up it differ, so a single level cannot satisfy even one row.
A zoom level is one number and the frame needs two. That is the sense in which a tilted view has no zoom level rather than an awkward one: the quantity the pyramid indexes does not exist for this frame, because the ground resolution is a two-by-two matrix rather than a scalar, exactly as the scale of a map is a matrix and not a number at every point of every projection.
What it costs, in tiles
Serving the whole frame at the nominal level over-serves the far distance enormously: 218 tiles against 20, most of them carrying detail finer than a pixel. Serving it at the level each band asks for needs four levels at once — 8, 9, 10 and 11 for a nominal 12 — which is what every renderer that draws a tilted map actually does, and which is why a tile request log from a tilted client looks nothing like one from a flat client.
The ladder shows the cost arriving gently and then quickly. At 15° the frame spans half a level and the anisotropy is 1.13 — negligible, and a client can pretend the map is flat. At 45° it is 1.91 levels and 2.08. At 60°, which is the limit most renderers impose, it is 3.60 and 4.49.
That limit is usually explained as a rendering decision — beyond it the horizon enters the frame and the far distance becomes useless. The measurement gives a different reason for the same number: beyond 60° the demand exceeds four levels, and the far edge asks for tiles whose ground resolution is coarser than anything the client has cached.
What was computed, and how
One camera model, evaluated at rows of the screen; one tile count, by sampling the footprint.
The camera is the pinhole above, with the focal length in pixels set equal to the height so that zero pitch is exactly the flat case. The two scales come from differentiating the ray–plane intersection with respect to the screen coordinates, in closed form. The ground resolution follows by multiplying by the plane’s own resolution at the given zoom and latitude, which is the same function every other essay on this ladder uses.
The tile counts are sampled: the frustum’s footprint on the plane is walked at 48 × 48 screen positions, each is converted into a tile identifier at the nominal level and at the level its own band asks for, and the distinct identifiers are counted. The far distance is cut off at a stated range, and that is not a detail — without a cut-off the footprint runs to the horizon, the tile count runs with it, and the number reported would be a fact about where the model stops rather than about the map.
The scale bar, already awkward, becomes impossible
A scale bar is right in one place is about a flat map, where the bar’s error is a function of latitude and could in principle be fixed by drawing the bar where the reader is looking. A tilted frame removes even that repair.
At the top of a 60° frame a bar drawn horizontally means one thing and the same bar drawn vertically means 4.5 times as much, so there is no length of bar that is right for the place it sits in — only for the place and the direction. Renderers deal with this by drawing the bar for the centre of the screen and accepting that it is wrong everywhere else, which is what the flat case already did, one dimension down.
The quantisation, at four levels at once
There is a reason none of this ruins a tilted map, and it is the scheme’s own strength. Because levels are a factor of two apart and tiles subdivide exactly, drawing from four levels at once costs nothing structurally: the tiles line up, the coarser ones cover more ground, and the seams fall on tile boundaries at every level. A tile is drawn without its neighbours is the price of that independence and it is paid here too.
So the mismatch this essay measures is real and is absorbed rather than fixed. The frame asks for 3.6 levels; the client supplies four integer ones and lets each band be up to half a level wrong; and the reason nobody notices is that a half-level error is 41 per cent in linear resolution, which is invisible in the far distance of a perspective view and is exactly where the error is largest.
Why the cap is at sixty degrees, in closed form
The three quantities in the ladder figure all have expressions, and they explain the empirical limit better than either of the two reasons usually given for it.
With a half field of view α, the row at the top of the frame looks along θ + α from straight down, and the two scales there are sec(θ + α)cos α across the screen and its square up the screen. So
For the essay’s frame — α = 18.435°, θ = 60° — those give 4.69 and 3.77 against the measured 4.49 and 3.60, the small shortfall being that the sampled top row sits just inside the frame’s edge.
Both expressions have the same denominator, and it is cos(θ + α). They diverge together at θ + α = 90°, which is where the horizon enters the frame — at a pitch of 71.6° for this field of view. Everything in this essay is a measurement of how close a given pitch stands to that singularity, and the growth is a reciprocal rather than anything gentle:
| pitch | anisotropy | levels demanded |
|---|---|---|
| 45° | 2.08 | 1.91 |
| 60° | 4.69 | 3.77 |
| 65° | 8.19 | 5.17 |
| 70° | 33.6 | 8.95 |
Five degrees past the cap doubles the anisotropy; ten degrees past it multiplies it by seven and asks the pyramid for nine levels at once.
So the sixty-degree limit is not a rendering preference and not a statement about the horizon being ugly. It is the last pitch at which the demand is under four levels and the anisotropy is under five — which is to say the last pitch a four-level draw and an ordinary anisotropic filter can absorb. One more degree costs more than the previous ten did, because the quantity is a secant approaching its pole.
That also says what a wider field of view costs, and it costs the same thing twice: α enters both the numerator and the denominator, so widening the lens moves the singularity down in pitch. A 60° field of view puts α at 30° and the horizon at a pitch of 60° exactly — which is to say a wide-angle tilted map has no usable tilt at all.
Where the model stops
The model is a camera looking at a plane, which is what a tilted web map is and is not what a globe view is. Above about zoom four most renderers stop tilting a plane and start drawing a sphere, and then the picture is a genuine perspective projection of the Earth with a horizon, a limb and a visible hemisphere — which is a different construction with its own distortion pattern, and one this collection has not measured.
Three smaller limits. The field of view is fixed at 36.87°, and a wider one puts the horizon in the frame at a lower pitch. The screen is treated as a plane of uniform pixels, where a real display has a device pixel ratio that is often not an integer. And nothing here is about what the tilt is for: a tilted view exists because it shows the vertical dimension of buildings and terrain, which is a purpose no distortion measure scores.
What the reader is actually looking at
One more consequence, and it is the one a cartographer rather than an engineer notices.
A flat web map is a map: it has a projection, its distortion is a computable field, and every essay on this site applies to it. A tilted web map is a photograph of that map, so the reader is looking at a composition — Web Mercator, then a perspective transformation — and the distortion the reader experiences is the composite’s, not the projection’s.
That composite is a plane-to-plane map with its own two principal scales and its own angular deformation, which is exactly the object a projection between two projections measures. Its angular deformation at the top of a 60° frame follows from the anisotropy above: two scales in the ratio 4.49 mean a shape stretched by that factor, which is 65 degrees of angular deformation — worse than any world map in this collection’s library manages anywhere.
The most distorted map most readers see is a tilted view of a street, and none of the distortion is the projection’s fault.
Why the pyramid was not redesigned
It is worth asking why a scheme built for a flat view survived a decade of tilted ones without being changed, because the answer is a good argument about when to leave an index alone.
A tile is a square of ground at one level, indexed by three integers, and everything about it is fixed at the moment it is cut: its extent, its resolution, its identifier and its cache key. Redesigning that for perspective would mean tiles that are not square, or tiles whose level varies within a request, or an index with a fourth number in it — and every one of those breaks the property the scheme exists for, which is that a tile is the same object for every client that asks for it.
What the renderers did instead is put all the perspective in the client: the tiles stay square and flat, and the client chooses which levels to draw where, resamples them onto the frame, and blends the seams. The mismatch this essay measures is the price of that decision, and it is paid by every frame rather than by the archive.
An index that is wrong for a new use and right for every old one is usually left alone, and the cost shows up as work at the edge rather than as a change at the centre. That is a pattern worth recognising: the numbers in this essay are not evidence that anything should be redesigned, they are the size of the compromise that was chosen.
The generalisation
The pattern is one every level-of-detail scheme meets and it is worth stating in the form the tile pyramid makes vivid. A scheme that indexes detail by a single number assumes that detail is needed uniformly across the view. A perspective view breaks the assumption in two independent ways at once: the required detail varies across the frame, and at each point it varies with direction.
Both have standard answers in computer graphics — mipmap chains selected per fragment, and anisotropic filtering that samples a footprint rather than a square — and both were developed for exactly this reason. What the tile pyramid does not have is the second: a tile is a square of ground at one level, and there is no anisotropic tile.
That is the structural finding of this rung, and it is not a criticism of the scheme. The pyramid was designed for a flat view, is optimal for one, and is being used for something else.
What the scheme would need is a second index beside the level — a shape as well as a size, so that a client could ask for ground that is fine in one direction and coarse in the other. That is not free, and the cost is not in the rendering. A tile is identified by three integers and cached by them everywhere between the renderer and the origin server; adding a shape multiplies the number of distinct keys by the number of shapes offered, and a cache whose hit rate depends on many clients asking for the same tile is exactly the thing that multiplication damages. The scheme’s uniform square is doing work in the network that has nothing to do with geometry, which is the usual reason a format that no longer fits its use is not replaced.
Who found it, and when
The tile pyramid is Google’s 2005 arrangement and the tilted view is a decade later — Mapbox GL in 2014, and every major renderer within a few years. The interesting part of the history is that nothing in the scheme changed: tiles are still square, still Mercator, still indexed by three integers, and the tilt is handled entirely in the client by choosing a different level for different parts of the screen.
That is why the finding is available at all. A scheme that had been redesigned for perspective would have absorbed these numbers into its own definition; one that was not shows them as a mismatch between what the client asks for and what the index can express.
The field-of-view result also explains a choice that looks arbitrary in every renderer’s configuration. A narrow lens is what makes a steep tilt possible, so the two settings are not independent knobs a designer may set to taste — a client that widens its field of view has to lower its pitch cap by nearly the same amount, and the product of the two is what the pyramid can actually serve.
Where the ladder goes next
This rung measures what a camera does to the map’s resolution. What it does not measure is what happens to the data when a client resamples tiles to fill a frame whose pixels do not line up with them — an anisotropic footprint sampled from a square tile is a resampling problem with a kernel, and the orders of convergence such kernels reach are exactly what one edge is not an edge finds are not properties of the kernel at all.
Named alongside this one
Essays reaching for the same objects. Nobody chose these; they are what the concept index makes visible.
- The pixel is a place with a size ground resolution · quantisation · tile pyramid · web mercator · zoom level
- A vector tile has an integer grid ground resolution · quantisation · tile pyramid · web mercator
- The renderer runs out of numbers before the zoom does pixel · quantisation · web mercator · zoom level
- The square costs the poles tile pyramid · web mercator · zoom level
- A coordinate is a number with a width ground resolution · quantisation
- A label belongs to no tile pixel · tile pyramid
What links here
Every essay whose body links to this one.
The objects this essay names
Each one links to every other essay that touches it.
AnisotropyCameraGround resolutionHorizonLevel of detailPerspectivePixelQuantisationScale denominatorTile pyramidWeb MercatorZoom level