Hacker News new | past | comments | ask | show | jobs | submit login
Tiny World Map (github.com/tinyworldmap)
530 points by bopjesvla 11 months ago | hide | past | favorite | 91 comments



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.


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.


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.


This has been improved in v2.


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.


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 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


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.


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


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.


> 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


> And some, notably Manchester, are entirely absent.

But Wrexham is shown - so the priorities seem correct. ;-)

[0] https://en.wikipedia.org/wiki/Wrexham_A.F.C.#2020%E2%80%93pr...


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.]


This has been fixed.


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.


There also seem to be some bugs in this, just look at Hamburg, Germany...


And Berlin is missing it's famous landmark TheBerg.


Same with the Alaska Panhandle, lots of uninhabited complex shoreline.


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


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.


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. ^^


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.


Fabulous.

I read your rail ads story with interest.

Great perspective.

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


Oh thank you for pointing this out!! I loved watching the ads and reading _ache_'s commentary. Wonderful work.

https://ache.one/articles/rail-and-advertising for the interested.


Thank you very much. How lovely.


"i18n" is very not internationalized abbreviation...


Well done. I'd need it to be vector based too.


Very cute - back in the olden days, I build something not entirely dissimilar

https://web.archive.org/web/20020611095429/http://www.cs.man...

20k line segments, 3,350 places, plus the viewer, and a quiz - all yours for 162Kbytes.


Thanks for the feedback, everyone. To give some context for our choices: until recently, country shapes were not the main focus of this project. For a long time, the version in the README without country borders was the only version, because we didn't think adding the entire world was feasible. Turns out, it was.

I've published a nightly version [1] that removes fjords and adds more detail elsewhere, including the much-requested islands. It also generally has a higher resolution. The reason we 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'm not sure the 10,000 most populated cities is the best filter.

This will prioritise cities in large countries with smaller countries likely to have most if not all cities unavailable.

Should be a secondary filter that has the top X cities in each individual country, this should capture all major cities in smaller countries.


There are other measures of urban significance.

Capitals (national, regional), global cities, cities by local prominence, etc., might all be useful modifications to the basic criterion.

I suspect geographers and cartographers might be able to inform this discussion more usefully.


I was interested to learn that the 10.000 largest settlements in the world gets you get down to 48.000 population. I’m still trying to work out if that is a surprising figure or not.


I'd long known that the largest 100 or so US cities by population gets down to the roughly 200k population level. Extending that to 200 cities is still above 100k (per Wikipedia, #333, Daly City, CA, is pop. 100,007: <https://en.wikipedia.org/wiki/List_of_United_States_cities_b...>). The relationship, as with so much else in scaling circumstances, tends to be linear on a log-log scale.

In China, you'd reach position 106 before finding a city of less than one million in population (the US has only nine such cities).

India, checking just now, has 46 cities with > 1 million population, the 100th ranked (Malegaon) is 471k, and at #300 population remains > 100k (Aurangabad).

Keep in mind that "city" is a highly arbitrary definition, and some of the world's largest cities would be the equivalent of metropolitan areas or even states or provinces elsewhere.

The largest city by area actually has a remarkably small population: Sermersooq, Greenland, with a population of 24,148 and land area of 575,300 km^2 (220,000 mi^2), which is not only larger than the US state of Rhode Island (by a factor of nearly 144 times), but all but two US states: only Texas and Alaska are larger, and the latter only modestly so (by 12%).

Urban geography is a complicated topic, and typically you'll find that comparisons are made on the basis of multiple scales and definitions such as metropolitan statistical areas (MSAs) and built-up land area, as well as population, which tend to smooth out arbitrary distinctions of political boundaries and give stronger weight to total demographic or economic influence.


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


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.


I think there's a flaw in this idea.

> By default, the map displays the 10,000 most populous cities added to OpenStreetMap. At the time of writing, this encompasses all cities and towns with a population of at least 48,000:

Statistically speaking, if you're closer to or even in those cities, you are more likely to have access to better network quality and speed. It's when you're in the more remote areas (or not near a population centre of 48,000 people...) that this project would be more useful.

If this map is only 300KB zipped and as it mentions offline-first, then surely a 1MB version would get you even better fidelity and more remote locations?


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".


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.


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.


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.


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.


Wow the large file is <1MB, that’s efficient


I wonder if it could be even smaller when they wouldn't store all coordinates with 10 decimal places, at least for the label positions.



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.


Love it! Wonder what is the logic behind having some lines ending with ";" in some cases and not having them in others. Is it just editor artefacts? i.e. the author had no intentions to put them, but the editor in some cases inserted them automatically.


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?


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.


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.


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.


The label is a blob.


At least there is New Zealand.


high compression is usually lossy


Interesting project! Would it be possible to add other types of boundaries?


Is there a reason why New Dehli doesn't show up at any zoom level?


I see this and the first thing I want to know is creating a Voronoi partition in order to see which city with >48k habitants is closest to any point in the map.

What is wrong with me.


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 map has issues. Where caspian sea? I dint found it.


Those 2 banners about usage are so prominent and distracting without the option to hide them. It makes it unusable for me.


Great product. Would be awesome if you could generate a smaller version depending on which part of the world you are biased towards.


I think I would have personally liked to have seen less small towns, and more major roads.


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.


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.


Love the service worker idea. What other things could service workers do with maps?


What happened to Hong Kong?!


Singapore has disappeared as well.


This is an interesting exploration, the idea of being offline is great.


Note that their license (ODbL) is more restrictive than AGPL.


Really cool project!




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: