Uff, wreszcie udało mi się z grubsza dojść do porządku z inteligentnym rozmieszczaniem etykietek tekstowych!
Zwrócił mi na to uwagę ostatnio Rekrutacja pokazując OpenTopoMap, gdzie nazwy nie są walone zawsze w centrum, tylko nieco przesuwane tam, gdzie jest mniejszy tłok. Niestety ich styl kodu jest mało czytelny, ale zauważyłem, że przecież we francuskim stylu także nazwy są w miarę możliwości odsuwane na boki - a to jest praktycznie fork osm-carto, więc znacznie łatwiej znajdować podobieństwa i różnice.
Podejrzana opcja to:
text-label-position-tolerance
ale dokumentacja Mapnika jest strasznie sucha i nawet Mateusz zwątpił jak o niej przeczytał, bo napisali tylko, że dotyczy linii. Ale skoro już miałem naoczne dowody, że to się da zrobić, to pozostało jednak sprawdzić, bo przecież taki obszar z nazwą de facto wyznacza zamknięta linia (czyli jego granica), więc być może niepotrzebnie się obawialiśmy.
Mnie najbardziej zależy na poprawkach na niskich skalach, bo np. nazwy województw zakrywają dość dokładnie nazwy miast wojewódzkich - w tym Warszawy, która jest widoczna dopiero od poziomu przybliżenia 8. Ale ponieważ dane całego świata, nawet odfiltrowane z drobiazgów, nadal wczytują się długimi godzinami, zastanowiłem się, czy może jeszcze jakieś napisy z nazwami obszarów występują na poziomie mikro. No i przypomniałem sobie, że przecież choćby nazwy budynków, które czasem są zasłaniane przez POI leżące w ich obrysie albo nazwy sąsiednich budynków!
A to już można szybko przetestować - i rzeczywiście, udało mi się znaleźć przykład, że to naprawdę działa:
https://github.com/gravitystorm/openstreetmap-carto/issues/1661
Oczywiście trzeba będzie znaleźć więcej takich przykładów, ale przynajmniej już wiadomo, że da się naprawić wyświetlanie miast na niskich i średnich poziomach przybliżenia, które moim zdaniem jest w tej chwili beznadziejne.
[EDIT:] No niestety po zastanowieniu nie do końca mam pewność, że to akurat ta opcja działa w tym wypadku, ale za to znalazłem kolejną rzecz lepiej zrobioną we francuskim stylu niż w osm-carto, więc spróbuję to wykminić i wdrożyć u nas.