Zdravím, protože se po roce nic nepohlo ani na jedné straně (mojí a Locusu) a dostal jsem dva dotazy, proč jsou zelené čáry tečkované místo plných bych to pro každý případ ještě jednou shrnul.
Detailní popis problému:
V surových datech OSM jsou turiskické trasy definovány mimo jiné takhle: osmc:symbol=waycolor:background[:foreground][[:foreground2]:text:textcolor]
To co je v hranatých závorkách tam být zadáno může, ale také nemusí - důležitá věc.
Pro mapy co děláme je třeba data trochu naporcovat, takže jako příklad vezměme: osmc:symbol=green:white:green_bar (normální zelená turistická)
Po vzoru LoMap to naporcujeme na jednotlivé kousky a vezmeme to jako úplně nová data do mapy
osmc_color=green
osmc_background=white
osmc_foreground=green_bar
Kde osmc_color říká, jakou barvu bude mít čára vedená podél cesty.
A osmc_background s osmc_foreground definují tu ikonku, v našem případě bílé pozadí a zelený pruh v popředí.
Problém ve zobrazení map s interném tématem Locusu je ten, že interní téma vykreslí zelenou čáru na základě toho, jakou má trasa ikonku. Buď tečkovanou pro osmc_foreground=green_backslash
nebo plnou pro osmc_foreground=green_arch|green_bar|green_bowl|green_circle|green_corner|green_cross|green_diamond|green_diamond_line|green_dot|green_drop_line|green_fork|green_hiker|green_L|green_rectangle|green_rectangle_line|green_right|green_round|green_slash|green_stripe|green_triangle|green_triangle_line|green_triangle_turned|green_turned_T|green_x
Tady je vidět, že je úplně jedno, jestli je mapový soubor odemě nebo od kohokoliv jiného. Ono to totiž bude havarovat i s LoMapami, pokud bude ikonka jiná, jak jsem odkazoval výše. Třeba relace
9090028 má osmc_symbol=
green:green:white_pointer To by se mělo vykreslit také tečkovaně? Nebo relace 5821581 kde žádný foreground ani background, tedy žádná ikonka ani není definovaná. To se má také vykreslit tečkované? Nemá, ale podle pravidel interního tématu Locusu to tak vypadá. Jak to řeší?
Já jsem tady navhl variantu přidat do interního tématu speciální zanačku ~, která funguje jako zástupce toho, že foreground není definovaný, což by vyřešilo kompatibilitu s mými mapami a taky problém s tím, když ikona definovaná není a to se týká i LoMap (pokud tam nedávají nějaký náhražkový foreground).
Takže pravidlo v interním tématu by vypadalo takhle (alespoň podle mě):
<rule e="way" k="osmc_foreground" v= "green_arch|green_bar|green_bowl|green_circle|green_corner|green_cross|green_diamond|green_diamond_line|green_dot|green_drop_line|green_fork|green_hiker|green_L|green_rectangle|green_rectangle_line|green_right|green_round|green_slash|green_stripe|green_triangle|green_triangle_line|green_triangle_turned|green_turned_T|green_x|~">
Jak to budou v Locusu dělat ve chvíli, kdy tam bude něco jiného než green_* (třeba white_pointer) už vůbec netuším. Zase bych si dovolil doporučit:
<rule e="way" k="osmc_foreground" v="~|ammonit|backslash|black_ammonit|black_arch|black_backslash|black_bar|black_circle|black_corner|black_crest|black_cross|black_diamond|black_diamond_line|black_dot|black_fork|black_hexagon|black_hiker|black_lower|black_pointer|black_rectangle|black_rectangle_line|black_right|black_slash|black_stripe|black_tower|black_triangle|black_triangle_line|black_triangle_turned|black_turned_T|black_x|blue_arch|blue_backslash|blue_bar|blue_bowl|blue_circle|blue_corner|blue_cross|blue_diamond|blue_diamond_line|blue_dot|blue_fork|blue_hexagon|blue_hiker|blue_L|blue_lower|blue_pointer|blue_rectangle|blue_rectangle_line|blue_right|blue_shell_modern|blue_slash|blue_stripe|blue_triangle|blue_triangle_line|blue_triangle_turned|blue_turned_T|blue_wheel|blue_wheelchair|blue_x|brown_bar|brown_circle|brown_cross|brown_diamond|brown_dot|brown_hexagon|brown_lower|brown_pointer|brown_rectangle|brown_rectangle_line|brown_right|brown_stripe|brown_triangle|brown_triangle_turned|brown_wheel|brown_x|corner|cross|green_arch|green_backslash|green_bar|green_bowl|green_circle|green_corner|green_cross|green_diamond|green_diamond_line|green_dot|green_fork|green_hexagon|green_hiker|green_L|green_lower|green_mine|green_pointer|green_rectangle|green_rectangle_line|green_right|green_slash|green_stripe|green_triangle|green_triangle_line|green_triangle_turned|green_turned_T|green_wheel|green_x|heart|hiker|L|mine|orange_backslash|orange_bar|orange_bowl|orange_circle|orange_corner|orange_cross|orange_diamond|orange_diamond_line|orange_dot|orange_hexagon|orange_hiker|orange_lower|orange_pointer|orange_rectangle|orange_right|orange_shell_modern|orange_stripe|orange_triangle|orange_triangle_turned|orange_wheel|purple_bar|purple_circle|purple_corner|purple_cross|purple_diamond|purple_diamond_line|purple_dot|purple_hexagon|purple_L|purple_lower|purple_pointer|purple_rectangle|purple_stripe|purple_triangle|purple_triangle_turned|rectangle|red_arch|red_backslash|red_bar|red_bowl|red_circle|red_corner|red_crest|red_cross|red_diamond|red_diamond_line|red_dot|red_fork|red_hexagon|red_hiker|red_L|red_lower|red_pointer|red_rectangle|red_rectangle_line|red_right|red_slash|red_stripe|red_tower|red_triangle|red_triangle_line|red_triangle_turned|red_turned_T|red_wheel|red_wheelchair|red_x|shell|shell_modern|tower|triangle|turned_T|wheel|wheelchair|white_arch|white_backslash|white_bar|white_bowl|white_circle|white_corner|white_crest|white_cross|white_diamond|white_diamond_line|white_dot|white_fork|white_hexagon|white_hiker|white_lower|white_pointer|white_rectangle|white_rectangle_line|white_right|white_shell|white_slash|white_stripe|white_triangle|white_triangle_line|white_triangle_turned|white_turned_T|white_wheel|white_wheelchair|white_x|yellow_arch|yellow_backslash|yellow_bar|yellow_bowl|yellow_circle|yellow_corner|yellow_crest|yellow_cross|yellow_diamond|yellow_diamond_line|yellow_dot|yellow_fork|yellow_hexagon|yellow_hiker|yellow_L|yellow_lower|yellow_pointer|yellow_rectangle|yellow_rectangle_line|yellow_right|yellow_shell|yellow_shell_modern|yellow_slash|yellow_stripe|yellow_triangle|yellow_triangle_line|yellow_triangle_turned|yellow_turned_T|yellow_x">
protože to jsou tak nějak všechny rozumné hodnoty foreground, co jsem našel v datech. Ale třeba je jich ještě víc.
Varianta navržená ze strany Locusu, abych si do své mapy přidával foreground (on tam je, ale mám jiné schéma = je jinde než interní téma čeká, takže jako by nebyl) je sice technicky možná a nápravu by to částečně přineslo. Nicméně by to zvětšilo mapový soubor (nevím o kolik, možná že vůbec). Ale hlavně, nebylo by to tak elegantní jako přidání hloupého "|~" do interního tématu, které absolutně řeší moje mapy s interním tématem a jako extra bonus vyřeší jeden z problémů interního tématu, který jsem popsal. A kdybych tam přidal ten foreground třeba s hodnotou white_pointer, jaká by byla čára? Zase tečkovaná.
Interní téma je prostě v tomhle místě polofunkční z hlediska vstupních OSM dat, proti tomu se nedá argumentovat. V tomhle místě se nedá říct, že se Locus téma nebude opravovat kvůli cizí mapě. Tady je problém ve špatné definici pravidla samotného. Na obranu zase uvádím, že se v tématech dost špatně (čti někdy to nejde) docílí toho, že chcete jednu věc vykreslit tak a všechny ostatní jinak. Ona tam není žádná možnost negace.
Závěr: uživatelé problém našli a chtěli vyřešit, spolu jsme ho rozklíčovali, navrhl jsem jednoduché elegantní řešení a rok se nic neděje.