93 comments

[ 2.6 ms ] story [ 146 ms ] thread
I woule adjust city density based on surroundings. I remember getting lost in Maps.me while in northern Russia: zooming out will not display any tiny villages of the area whereas zooming in will not place any of those on the screen. So you got a blank slate.

Meanwhile, displaying every suburb of a metropolis possessing a town status may be superfluous.

Interesting comment. I guess it should be optimised for density uniformity somehow.
That's the way to do it. You get the map area, divide it by a constant and get the number of stuff your map should display. Then it's a matter of getting the largest-n stuff from the database.
You can always zoom to a level such that there's nothing there. And if all that is there is a few small villages, then "nothing there" isn't far of the mark anyway.

If you include smaller cities to 'fill in blank spaces', then either:

a) You'd have to drop a bigger city/suburb elsewhere. Not display a 1M town to be able to display a 10k town in thinly populated area elsewhere? Hmmm...

b) Or the app get bigger. Which defeats the purpose of having a tiny world map.

Want more detail? Just use some other app.

I was unable to find Easter Island.
Yes, many of the islands are missing even if they have labels (e.g. Faroe Islands). It would be nice if there was just a blob there at least.
Agreed. I get that there has to be a trade off between size and coverage, but if it's a map it should really have the option - at least - for the person implement it to choose density. Personally, I'd want every island to be at least shown as a blob.
I noticed the islands too (apparently only islands above a certain size "qualify" - of the Canary Islands you only get Gran Canaria and Tenerife, of the Galapagos Islands only Isabela, of the Azores - nothing), but all European "microstates" (https://en.wikipedia.org/wiki/European_microstates) are also not shown, some of them (Liechtenstein, San Marino) not even as labels.
This is SOO Good! Thank you for making this.

Just as an idea: I think your demo should include an optional "Locate Me" button that requests geolocation perms and prints the lat long point on the map.

Great product. Would be awesome if you could generate a smaller version depending on which part of the world you are biased towards.
This is cool, but the shorelines are very low detail. A few towns in the UK are off in the sea, meanwhile Greenland and Northern Canada are hogging all the vertices.

It looks as though the Mercator projection is already being accounted for in the detail level, but it would be good to deprioritize unpopulated areas.

This notably lead to making it not very usable at all in islands or achipelago area. Even the philippines, with a lots of islands sure but several ones of them being rather large, is not usable.

French polynesia doesn't even exists on the map.

Neither is Saint Pierre et Miquelon. There is the island of la Réunion but no name, and the name for Ibiza but no island...

I hope those can be fixed, I love the concept.

> A few towns in the UK are off in the sea

And some, notably Manchester, are entirely absent.

Developer is clearly from Liverpool :D

It's odd - they've got places like Stockport, Salford, Oldham etc, just not Manchester. Manchester has the highest population of the boroughs in Greater Manchester

Manchester's there, ESE of Salford, if you zoom in enough.
Wasn't there yesterday!

[edit: also still kinda broken though because Southport, Blackpool, Burnley, Grimsby etc. all appear before Manchester which makes no sense.]

Nice project! It may be useful to select the included places also by QRank of Wikidata [1] so notable islands will appear, despite low populations. An SQLite DB of QRank [2] was also posted here in HN a while ago.

[1] https://qrank.wmcloud.org/ [2] https://github.com/hikeratlas/qrank

(Saving people a click for link#1: qrank sorts Wikidata entries by their pageviews across Wikipedia, Wikiquotes, Wikibooks, etc.)

I'm not sure that an online popularity contest should be the input for a base map. I understand the reasoning that they're more likely to be viewed by someone, but it's also a bubble: is Wikipedia / are Wikimedia projects as popular in Asia as this base map will be? Is that used for the same purpose as this base map? Should something be shown on a map when there's a lot of drama about it rather than because a lot of people live there?

I see the advantages also, like if literally nobody lives there but it's an interesting or large landmass then there's cause for it to be included. I just don't think this is the right (objective, fairest) importance measure to use

qrank is not a mere popularity contest and definitely not a more arbitrary measure of importance than the count of population within city boundaries (boundaries can be arbitrary; population vs commuters vs tourists; regional capitals etc.)

> I just don't think this is the right (objective, fairest) importance measure to use

What's "right" can depend on the purpose of the map.

The simplification was sloppy all around. Entire nations are missing in the Caribbean. These are basic quality control checks.
The step from simple simplification to automatic generalizations is not trivial, the map agency in Sweden just recently began publishing map updates for different scales using their own automatic generalization rules. I'm guessing they will save a lot of man hours by doing that, but they have taken their sweet time doing it.

The zoom needs to be locked this map should not be used/critiqued beyond a certain level and that needs to be more apparent. You can see the same the map that Ache posted bellow, as long as you keep zoomed out it is mostly good enough. My point is that this is not a sloppy job, but you are right that neither managed to solve the hardest problem.

Same with the Alaska Panhandle, lots of uninhabited complex shoreline.
There also seem to be some bugs in this, just look at Hamburg, Germany...
(comment deleted)
And Berlin is missing it's famous landmark TheBerg.
The ratio/prioritisation of detail in cities to shorelines seems oddly skewed towards including more cities over having accurate borders or shorelines

It's showing an entire province in the Netherlands as disconnected from the rest of the country, like it's an island (it's not), but knows to name five cities inside of that province, several of which basically on top of each other. (The inclusion of the afsluitdijk, on the other hand, is unnecessary detail imo but I get that it's hard to programmatically select those tweaks about what's considered land which it needs to draw and just some sea infrastructure)

I should open a ticket on the issue tracker but am not logged in on mobile so the best I can do atm is an HN comment. If someone else has a moment and feels the same way, feel free to cite this comment towards shifting the ratio a little! Or introducing a minimum separation distance between cities, or getting a smaller overall file, whatever the ideal solution may be but the current ratio is a tad unnecessary

I've published a nightly version [1] that removes fjords and adds more detail elsewhere. It also generally has a higher resolution. The reason I originally didn't do the latter is because old phones, especially those running Firefox for Android, can crash while drawing large amounts of polygons. I have since optimized the drawing procedure, but beware!

[1] https://tinyworldmap.com/beta.html

I noticed that all of the New York City metropolitan area was replaced with a single angled line, cutting off several large islands supporting a few million in population.
I see this is improved in today's Nightly Demo link, but I still find the result too low fidelity.
This is really nice although I'm finding the progressive loading a bit unreliable - sometimes tiles don't display if I zoom and pan quickly at the same time. I'm using FF 125.0 on Android.
(comment deleted)
I made the same (offline first, very small, vector based) but with a focus on i18n. So it's available in all languages of the United Nation (except Spanish because I just forgot, shame on me, could be made in a couple of hours).

The name of the countries (and cities) are the official one declared at the UN. So, yeah, the official short version of UK is "United Kingdom of Great Britain and Northern Ireland".

https://map.ache.one/en

Fabulous.

I read your rail ads story with interest.

Great perspective.

素晴らしい視点でした from ja-JP

Thank you very much. How lovely.
That's nice, but quite buggy. "Cape town" appears in South Sudan, though the country is not named. Erythrea is also missing its name. And there are 2 Somalia blocks, with different colors.

My own experience is that it's rather easy to draw a light map and deal with i18n. There are several open data sources and libraries. The hard problem is purely administrative. If you have data tied to most countries, there's certainly a mismatch with your source for a map, and you have to build a custom map yourself.

There is no consensus on what a country is. A few examples of divergences: Western Sahara is officially a country, but practically it's always been occupied by Morocco. Somalia is a mess, with Somaliland and Puntland being de facto independant coutries though noone acknoledge them officially. Between these two categories, Greenland, Nue and a few others are not fully independant.

> 2 Somalia blocks, with different colors

The western one should be Somaliland, as you mention. The map seems to take the duck-typing approach to countries, rather than taking the official stance of any one country. There's Somaliland, Taiwan, Kosovo, Cyprus, Israel and Palestine, etc. No Northern Cyprus though.

I tried to use only UN approved names. « Somaliland » isn't on unterm.un.org, it's why there is two Somalia. I'm pretty sure that Eritrea isn't on the map because of a display bug.

Definitively, if you are making a map, your have to make geopolitical chooses. And yes, I have edited NE data to highlight the geopolitical choices that I think are the simplest to defend.

"i18n" is very not internationalized abbreviation...
Not sure if the star is supposed to indicate the biggest city or the capital, but if it's the latter, Tanzania has it wrong. The star is on Dar Es Salaam but the label over it says Dodoma, which is the name of the actual capital but it's more in the center of the country.
Thank you for pointing this out.

The capital positions are the only data that is not UN sourced nor from natural earth. I will fix that.

Well done. I'd need it to be vector based too.
Couldn't find any description on how you made that, it is a beautiful map. There are things about Tiny World Maps as well, but they do not have a good description on how it's made either. From my own experience on a country scale it was a manual process with dirty hacks then getting the testing to get it right was the worst (mainly the right generalization, and what people expect on their local map).

Do you think it is worht the effort for you to significantly improve this map?

I will improve the map and explain how it was made and why, because I think it worth it.

But I'm not going to improve it significantly.

Thank you. ^^

It's very good !

- Get the islands back !

- Limit the zoom level to not pass through the land

- Make the Capital city maybe in light bold or slightly bigger to differentiate them

- Fix long name

- Some cities disappear when you zoom.

This is cute, and I can imagine there are some use cases for it. But I was disappointed to find out that it doesn't even have the 150km2 island that I live on. Maybe a bit too small for most cases.
It's funny that it doesn't have the great lakes. I guess it doesn't have any internal bodies of water.
Interesting project! Would it be possible to add other types of boundaries?
Interesting that some relatively recent changes of preferred names like Czech Republic->Czechia and Macedonia->North Macedonia are on there but not Turkey->Türkiye and East Timor->Timor-Leste.
Considering the coarseness of the borders, I am very surprised this takes up as much space as it does. It seems like the total data size is well under the threshold of utility vs. filesize. If it were double the size, the borders wouldn't be so janky, for example.
The full file is some 700K without gzip compression

> all the data present in the complete version except for country borders and shorelines. This reduces [the size] by 200k

So about 29% is border/shore data, 71% is city names and locations

Imo a lot of cities could be dropped, especially when they're on top of each other (not visible until you've zoomed in so far to see a grey landmass and that city name) to make the shorelines more accurate

I'm also not sure how often a general location on a world map is needed. Wouldn't one more often want a low-KB map of the surrounding highways and transit lines one can use to reach the POI whose website you're currently looking at, for example? A version for every few km² on the planet could be built and you could have quite a lot of useful detail at a tenth of the size. Global low poly also has its purposes, like tracking the space station I guess, but it seems much rarer

This should really include capitals even if they are smaller than 40k and star them in some way
Very cool. I've long wanted to make an 8-bit throwback style "species page", think an EOL or wiki-page, or our own TaxonPages effort (example at https://orthoptera.speciesfile.org/otus/850075/overview). I'd like to see how much (symbolic) information you could pack into simplified figures etc, this would fit right in to answer the question "where in the world can I find the species, roughly".
Is there a reason why New Dehli doesn't show up at any zoom level?
This runs really smoothly on my midrange phone. On the GitHub page it doesn't mention if there is translated versions, I will consider it if there is a version in Spanish.
This is really cool! I’m super impressed at how quickly it loads on my phone.

Really great idea to compress the spatial data into Paths.

I would suggest using Natural Earth data instead of OSM so you could drop the ODbL license.

It’d also be really cool if you included the tool that converts the spatial data into Paths.

Those 2 banners about usage are so prominent and distracting without the option to hide them. It makes it unusable for me.
Love the service worker idea. What other things could service workers do with maps?
Lots of errors, why does this exist? What is the use case for a map without precision?
That’s stated in the description. As a fallback and when you only need general location.
I think I love the idea - solve the problem of "you zoomed out too far, now wait for the server to load tiles for the continent you just asked to be rendered" - but I'm not sure what the use cases are where I need to know where West Bloomfield Township is in relationship to Waterford Charter Township (both suburbs of Detroit) but not what state they're in or even that the Great Lakes exist.

I would like to see a lot more data put into coastlines and a lot less into subdividing major metropolitan areas.

The idea is good, but it should really include the 100 biggest islands, 50 biggest lakes, 200 longest rivers, or something along those lines.
Some random spots I checked out of curiosity, Alexandria, VA, USA is on the wrong side of the river and the country of Bahrain is very sad.
To say nothing of road and rail! It makes sense in a road map that you keep in your car, but you don't need to know where the roads are otherwise. Blots out so much other possible info.
seems a bit weird to use a service worker to do an offline version... the tutorial linked is long and worthless if you want people to quickly install and use it, you need to either make a shorter more concise tutorial.

imagine somebody loses internet access, he can't really open this thing to just access a map, I don't understand.

why not just provide a html file with the tiles encoded as base64 or something similar? just provide a zip file... I am not a web developer, this seems like a good thing, but deployment is 1/10... minimalist things are supposed to be very easy to deploy.

EDIT: just saving the page, and it works. I don't understand what the service workers are for. web dev has mysterious ways.

That's what service workers are for.

This service worker explicitly caches all the resources the app needs to run then intercepts requests for those resources so all the JS that depends on the resources still runs while you're offline.

If you had visited the site in the past, even if you were offline you would be able to go to that URL and the service worker would serve everything needed from cache.

that means the demo doesn't have a service worker?