Dużo pytań
Może raczej spróbuję opisać działanie tych map ogólnie, z nadzieją że większość spraw wyjaśnię przy okazji.
Mówimy o 2 programach: Locus i OsmAnd. Można do tego dodać Oruxmaps, który działa tak jak Locus, korzysta z tych bibliotek programowych i powinien wyświetlić mapę przygotowaną dla Locusa. Nie używam Oruxmaps, więc ograniczę się do Locusa.
Oba programy, Locus i OsmAnd, potrafią obsługiwać mapy wektorowe. Tzn., że plik z mapą nie zawiera obrazków (rastrów) ale zawiera gołe dane, podobnie jak xml w OSM. Format tych danych jest inny niż źródłowy xml, bo jest przystosowany do szybkiego przeszukania i renderowania na ekranie urządzenia. Nie znam szczegółów formatu, mogę przypuszczać, że dane są podzielone na obszary (kafelki) i warstwy zależne od prezentowanej skali.
Oprócz mapy z danymi, programy korzystają z plików stylu. Styl zawiera opis w xml i dodatkowe obrazki, np. ikony POI. Styl definiuje, jak rysować obiekty mapy. Obiekty są rozróżniane po kluczach OSM, tzn. w xml znajdziesz opisy typu “highway=residential” czy “amenity=school”. Sam opis przypomina definicje SVG, przykładowo przerywana linia dla czerwonego szlaku opisałem tak:
W telefonie możesz mieć wiele stylów, co pozwala na radykalne zmiany wyglądu mapy. Przykładowo możesz wyłączyć warstwice i szlaki albo ustawić ciemne kolory do pracy w nocy.
Przygotowanie mapy do telefonu polega na skonwertowaniu źródeł OSM do specyficznego formatu używanego przez programy. Szczegóły konwersji są konfigurowalne, tzn. konwerter korzysta z opisu xml, w który jest podane, jakie obiekty (klucze OSM) należy zachować i na jakich warstwach (skali) te obiekty powinny zostać umieszczone. Na etapie konwersji decyduje się, co faktycznie będzie zawierać mapa.
O ile Locus i OsmAnd są dość podobne w sposobie prezentacji map wektorowych, to stosują całkiem różne oprogramowanie i narzędzia. OsmAnd stosuje konwerter OsmAndMapCreator:
http://wiki.openstreetmap.org/wiki/OsmAndMapCreator
Locus korzysta z narzędzi Mapsforge, w tym z pluginu osmosis Map-Writer do konwersji map:
http://wiki.openstreetmap.org/wiki/Mapsforge
OsmAnd wydaje się być bardziej zaawansowany, Mapsforge chyba przestał być rozwijany ze 2 lata temu. W naszym przypadku głównym problemem Mapsforge jest brak obsługi relacji OSM. A szlaki są właśnie definiowane jako relacje. To oznacza, że aby zobaczyć szlaki na mapie w Lokusie, należy w danych źródłowych OSM skonwertować relacje na drogi. Czyli stworzyć nowe obiekty typu way, z nowymi kluczami, które nie konfliktują z OSM. Oraz należy w plikach stylu zdefiniować, jak te nowe obiekty rysować na mapie.
Mapy przygotowane do Locusa na openandromaps zawierają szlaki. Nie są one jednak przygotowane tak, jak przywykliśmy to widzieć na polskich mapach. Prawdopodobnie schemat prezentacji szlaków odpowiada standardom zachodnioeuropejskim. Szlaki są dzielone wg hierarchii administracyjnej (lokalne, regionalne, krajowe, międzynarodowe) oraz wg skali trudności. I kolory na mapie odpowiadają temu podziałowi a nie faktycznemu oznakowaniu w terenie.
Standardowe mapy dla OsmAnd zachowują dane z relacji opisujące kolor szlaku. W rezultacie wyświetlenie szlaku na mapie sprowadza się do użycia stylu, który te kolory pokazuje.
Na moich mapach do Locusa dodałem szlaki z zachowaniem informacji o kolorze. Ten kolor jest pokazywany na mapie, jeżeli użyje się załączonego stylu. Przy czym użyłem stylu z openandromaps, do którego dodałem krótki fragment z opisem moich szlaków. Ten fragment bez modyfikacji można przekopiować do dowolnego innego stylu i taki styl powinien pokazać szlaki z mojej mapy.
Co do szczegółów konwersji, to używam standardowych konfiguracji programów konwertujących. Poza dodaniem szlaków niewiele zmieniałem. To oczywiście można zrobić, np. dodać anteny GSM. Ale prawdę mówiąc, to nawet nie miałem czasu, żeby zanalizować co już jest w tych konfiguracjach. I nie wiem, dlaczego zniknął kawał lasu
Co do sposobu wyświetlania obiektów, to właściwie powinien decydować program przy renderowaniu. W stylu można definiować cechy etykiety ale nie zauważyłem nic, co pozwalałby na sterowanie w przypadku konfliktów. W OsmAnd można definiować jakieś priorytety, ale jeszcze nie wiem, jak to działa. Zrzuty, które zamieściłem w wątku, pochodzą z telefonu o rozdzielczości ekranu rozdzielczość 800x480. Nie mam porównania z innymi urządzeniami. Teoretycznie styl lub ustawienia programu powinny dopasować wygląd mapy do cech ekranu.
Jeszcze drobna uwaga: przy przygotowywaniu map, wiele cech można poprawić poprzez edycje danych źródłowych. Tu niestety narzędzia OSM kuleją, nie znalazłem użytecznych edytorów dla danych mapowych w formacie OSM. Może Global Mapper dałby radę, tylko trochę za drogi jak na przetwarzanie OSM