At the default zoom setting, notice how London is totally absent from the map of the UK. The nearest dot on the map represents the thriving metropolis of Barnet. Similarly, Edinburgh is omitted while relatively unimportant towns such as Hartlepool and Basildon are shown.
Over in Holland there’s no sign of Amsterdam, yet Zaanstad (pop 147,000) is there for all to see.
What is the significance of these places that they should take precedence over national capitals? Interestingly, if you zoom in, many of them disappear. In fact you have to zoom in another three levels before Barnet reappears!
It’s because, contrary to what many people believe, Google programmers are not perfect. They make mistakes.
I say that because I work in the digital mapping field and from time to time I’ve had to fix precisely this kind of bug.
I would go further: As an expert in this field, I have found many bugs in Google Maps over the years, some minor, some major; some fixed quickly, some not. They are good, but my no means perfect.
I’ve just noticed that if you go to maps.google.com (rather than maps.google.co.uk) and then scroll across to the UK, you do see London - but on closer investigation that’s because the default zoom level for the US version is one step further out than for the UK version. (America being bigger, and all.)
I remember odd cities showing up in the default zoom of the US at maps.google.com in the past, but it’s pretty clean nowadays. Maybe not enough people have bugged them about the default zoom levels in other countries?
I don’t know, there are some odd choices at higher zoom levels. At 200-mile zoom, there’s York, Pennsylvania, just to pick one example, which is apparently more significant than nearby Philadelphia or Baltimore. The latter doesn’t show up until you get down to 50-mile zoom.
More precisely, I wouldn’t say it is the labeling which is at fault, but rather in its choice of which cities to show at all. In the OP’s case, I can’t imagine what rules the algorithm has, which led it to ignore London.
Other examples are easier to understand. I’m currently looking at the northeast USA, at a zoom level where the bottom left corner shows “200 mi / 200 km”. Not a single city is shown for all of Vermont, NH, CT, Mass., or RI. And that’s easy to understand, because after the state is labeled, there’s simply no room to show any cities. Similarly, Wilmington DE is shown while Philadelphia is omitted, but again, that’s because the name of NJ got in the way of showing Philly. NJ’s name could have been moved lower, but that’s exactly the sort of compromise that these algorithms have trouble with. It seems that the algorithm has a strong preference to keep the state name in the center of the state.
At the next level (100 mi / 200 km), Philadelphia is visible because NJ’s name is indeed moved down. I’m very curious how that algorithm works, because the name could easily have been kept in the center by hiding Edison. Now, if the algorithm moved “New Jersey” out of the way so that it could show Edison, why didn’t it move “Maryland” out of the way, so that it could show Baltimore?
Speaking as a former programmer, I want to stress that these are not complaints. I fully appreciate how difficult it is for a machine to make these artistic choices. My comments are merely points of curiosity, wondering how the algorithm works. Again, the OP’s London question is much more extreme than any of the points I raised, and I would use it as a debugging example.
I think you’re on to something with the idea of state names taking preference over city names. A good example is Indianapolis - right in the middle of the state, so the word “Indiana” obliterates it all the way down to 20-mile zoom, the level at which state names are no longer shown. There are still some puzzling omissions, though - at 200-mile zoom, St. Louis is absent but it doesn’t seem to be interfering with any state names.
The basic problem you’re trying to solve with labeling algorithms is that you want to label as many items as possible, especially the important items, but you don’t want your labels to “collide”. That is, you don’t want them to land on top of each other.
So typically each item that needs a label is given an importance and a set of possible positions for that label, and the algorithm is also given a set of rules for what constitutes a collision between labels.
After that, every algorithm is different. The simplest ones put the labels down strictly in order of importance, and once a label is placed they don’t move. So for example London would be placed first, and then everything after has to take into account wherever the London label is.
The advantage if this is that it almost guarantees that all the important cities will be labeled. The disadvantage is that in many cases the early cities are labeled in places that block many medium-imporant cities from being labeled, when they could have been labeled if the label for London, say, had been moved just a little bit.
So more modern labeling algorithms try to create a balance between the total number of cities labeled and the importance of the cities labeled. I think that’s what Google did here, but they tweaked it just a bit too much against importance.