Compare commits

..

9 Commits

Author SHA1 Message Date
x7z4w
4c8ff9c22e [routing] Faster IndexGraph
Signed-off-by: x7z4w <x7z4w@noreply.codeberg.org>
2025-11-08 13:21:11 +00:00
map-per
8799c5613e [editor] Fixes for the OSM uploading code
Signed-off-by: map-per <map-per@gmx.de>
2025-11-08 11:47:51 +01:00
Codeberg Translate
4a91c55ece [strings] Update from Codeberg Translate
Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: map-per <map-per@noreply.codeberg.org>
Translation: CoMaps/Search synonyms / aliases
2025-11-08 09:51:22 +00:00
vikiawv
268ad19089 [styles] Removing whitespace from hexagon roadshields
Signed-off-by: vikiawv <vikiawv@noreply.codeberg.org>
2025-11-08 10:51:09 +01:00
vikiawv
325f62d8cb [styles] Adding Hungary roadshields
Signed-off-by: vikiawv <vikiawv@noreply.codeberg.org>
2025-11-08 10:51:09 +01:00
x7z4w
443d24b8d0 [cmake] Fix definitions
Signed-off-by: x7z4w <x7z4w@noreply.codeberg.org>
2025-11-08 09:18:10 +01:00
Codeberg Translate
c0e492247e [strings] Update from Codeberg Translate
Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: Frz <frz@noreply.codeberg.org>
Co-authored-by: JanezPavelZebovec <janezpavelzebovec@noreply.codeberg.org>
Co-authored-by: Kachelkaiser <kachelkaiser@noreply.codeberg.org>
Co-authored-by: Pat580 <pat580@noreply.codeberg.org>
Co-authored-by: Prefill add-on <noreply-addon-prefill@weblate.org>
Co-authored-by: Stzyxh <stzyxh@noreply.codeberg.org>
Co-authored-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
Co-authored-by: codebergian42 <codebergian42@noreply.codeberg.org>
Co-authored-by: ghose <ghose@noreply.codeberg.org>
Co-authored-by: ovl-005 <ovl-005@noreply.codeberg.org>
Co-authored-by: teletext <teletext@noreply.codeberg.org>
Co-authored-by: x7z4w <x7z4w@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/comaps/fdroid-app-description/
Translation: CoMaps/Android - Map Feature Types
Translation: CoMaps/Android UI Strings
Translation: CoMaps/Apple AppStore description
Translation: CoMaps/Countries and regions names
Translation: CoMaps/F-Droid app description
Translation: CoMaps/Google Play and Huawei AppGallery descriptions
Translation: CoMaps/Search synonyms / aliases
Translation: CoMaps/iOS - Map Feature Types
Translation: CoMaps/iOS Plurals
Translation: CoMaps/iOS UI Strings
2025-11-08 08:30:09 +01:00
map-per
e71550e78b Fix details shown in editor for tourism and place_of_worship
Signed-off-by: map-per <map-per@gmx.de>
2025-11-07 22:56:33 +01:00
Yannik Bloscheck
b3991555b5 [styles] Fix waterpark label color
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-11-07 21:52:27 +01:00
60 changed files with 792 additions and 380 deletions

View File

@@ -0,0 +1,31 @@
Brezplačno in odprtokodno zemljevidno orodje, ki ga vodi skupnost, temelji na podatkih OpenStreetMap in je okrepljena s predanostjo transparentnosti, zasebnosti in nedobičkonosnosti. CoMaps je izpeljanka OrganicMaps, ta pa je izpeljanka Maps.ME.
Preverite si o razlogih za ta projekt in njegovi usmerjenosti na <b><i>codeberg.org/comaps</i></b>.
Pridružite se skupnosti in pomagajte narediti najboljše zemljevidno orodje
• Uporabljajte orodje in širite glas o njem
• Dajajte povratne informacije in poročajte o napakah
• Posodabljajte podatke zemljevida v tem orodju ali na spletni strani OpenStreetMap
‣ <b>Osredotočeno na uporabo brez povezave</b>: Načrtujte in se usmerjajte na vašem potovanju v tujini vrez potrebe po mobilnih podatkih, iščite vmesne točke potocanja ko ste na daljšem pohodu ipd. Vse zmogljivosti orodja so zasnovane za delo brez povezave.
‣ <b>Spoštovanje zasebnosti</b>: orodje je zasnovano z mislijo na zasebnost ne prepoznava oseb, ne sledi in ne zbira osebnih podatkov. Brez oglasov.
‣ <b>Preprosto in dodelano</b>: nujne zmogljivosti, enostavne za uporabo, ki preprosto delujejo.
‣ <b>Prihrani vašo baterijo in prostor.</b>: ne izčrpava vaše baterije kakor druga usmerjevalna orodja. Strnjeni zemljevidi prihranijo dragocen prostor na vašem telefonu.
‣ <b>Brezplačno in ustvarjeno v skupnosti</b>: ljudje kot ste vi pomagajo ustvarjati to orodje, tako da dodajajo kraje na OpenStreetMap, preizkušajo in dajejo povratne informacije o zmogljivostih in prispevajo svoje razvijalske sposobnosti in sredstva.
‣ <b>Odprto in transparentno odločanje in finance, nedobičkonosno in popolnoma odprtokodno.</b>
<b>Glavne zmogljivosti</b>:
• Prenosljivi podrobni zemljevidi s kraji, ki na Googlovoh zemljevidih niso na voljo.
• Prikaz za dejavnosti na prostem s poudarjenimi pohodniškimi potmi, tabornimi prostori, vodnimi viri, vrhovi, plastnicami itd.
• Pešpoti in kolesarke poti
• Kraji zanimanja, npr. restavracije, bencinske črpalke, hoteli, trgovine, znamenitosti in mnogo več
• Iščite po imenu, hišnemu naslovu ali po vrsti
• Usmerjanje z glasovnimi obvestili za hojo, kolesarjenje ali vožnjo avtomobila.
• Zaznamujte svoje najljubše kraje s preprostim dotikom
• Wikipedijini članki brez povezave
• Prometna plast podzemne železnice z usmerjanjem
• Izvozite ali uvozite zaznamke in sledi v oblikah KML, KMZ, GPX
• Temni prikaz za uporabo ponoči
• Izboljšajtw podatke zemljevida za vse z uporabo vgrajenega urejevalnika
<b>Svoboda je tu</b>
Odkijte več o vašem potovanju, usmerjajte se po svetu s poudarkom na zasebnosti in skupnostnem delovanju!

View File

@@ -0,0 +1 @@
Comaps- Vandra, Cykla, Kör Offline, Privat

View File

@@ -0,0 +1 @@
Comaps- Navigera Privat

View File

@@ -623,7 +623,8 @@
<string name="charge_socket_unknown_other">Outro ou descoñecido</string> <string name="charge_socket_unknown_other">Outro ou descoñecido</string>
<string name="unknow_socket_type">engache descoñecido</string> <string name="unknow_socket_type">engache descoñecido</string>
<string name="editor_place_doesnt_exist_description">Describe a aparencia do lugar para enviar unha nota co erro á comunidade OpenStreetMap</string> <string name="editor_place_doesnt_exist_description">Describe a aparencia do lugar para enviar unha nota co erro á comunidade OpenStreetMap</string>
<string name="avoid_steps">Evitar pasos</string> <string name="avoid_steps">Evitar escaleiras</string>
<string name="offline_explanation_title">Mapas sen conexión</string> <string name="offline_explanation_title">Mapas sen conexión</string>
<string name="offline_explanation_text">Hai que descargar un mapa para ver e navegar polo área.\nDescarga os mapas para as zonas polas que vas viaxar.</string> <string name="offline_explanation_text">Hai que descargar un mapa para ver e navegar polo área.\nDescarga os mapas para as zonas polas que vas viaxar.</string>
<string name="list_description_empty">Editar a lista para engadir unha descrición</string>
</resources> </resources>

View File

@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -27,7 +27,7 @@
<!-- A dialog title, that warns a user that Precise Location is disabled and suggests to turn it on --> <!-- A dialog title, that warns a user that Precise Location is disabled and suggests to turn it on -->
<string name="limited_accuracy">精度有限</string> <string name="limited_accuracy">精度有限</string>
<!-- A dialog text, that warns a user that Precise Location is disabled and suggests to turn it on --> <!-- A dialog text, that warns a user that Precise Location is disabled and suggests to turn it on -->
<string name="precise_location_is_disabled_long_text">为确保准确导航,请在设置中启用确切位置</string> <string name="precise_location_is_disabled_long_text">为确保导航准确,请在设置中启用 \"精确定位\"</string>
<!-- View and button titles for accessibility --> <!-- View and button titles for accessibility -->
<string name="zoom_to_country">在地图上显示</string> <string name="zoom_to_country">在地图上显示</string>
<!-- Message to display at the center of the screen when the country download has failed --> <!-- Message to display at the center of the screen when the country download has failed -->

View File

@@ -975,7 +975,7 @@
<string name="type.shop.books">Bokhandel</string> <string name="type.shop.books">Bokhandel</string>
<string name="type.shop.butcher">Slakter</string> <string name="type.shop.butcher">Slakter</string>
<string name="type.shop.cannabis">Cannabisbutikk</string> <string name="type.shop.cannabis">Cannabisbutikk</string>
<string name="type.shop.car">Bil butikk</string> <string name="type.shop.car">Bilforhandler</string>
<string name="type.shop.car_parts">Bildeler</string> <string name="type.shop.car_parts">Bildeler</string>
<string name="type.shop.car_repair">Bilverksted</string> <string name="type.shop.car_repair">Bilverksted</string>
<string name="type.shop.car_repair.tyres">Dekkreparasjon</string> <string name="type.shop.car_repair.tyres">Dekkreparasjon</string>
@@ -1353,4 +1353,14 @@
<string name="type.railway.narrow_gauge.bridge">Smalsporet jernbanebru</string> <string name="type.railway.narrow_gauge.bridge">Smalsporet jernbanebru</string>
<string name="type.railway.narrow_gauge.tunnel">Smalsporet jernbanetunnel</string> <string name="type.railway.narrow_gauge.tunnel">Smalsporet jernbanetunnel</string>
<string name="type.leisure.slipway">Slipp</string> <string name="type.leisure.slipway">Slipp</string>
<string name="type.post_office.post_partner">Post i butikk</string>
<string name="type.amenity.pub">Pub</string>
<string name="type.historic.monument">Monument</string>
<string name="type.man_made.crane">Kran</string>
<string name="type.military.bunker">Bunker</string>
<string name="type.railway.construction">Jernbanebygging</string>
<string name="type.railway.funicular.bridge">Kabelbanebru</string>
<string name="type.railway.funicular.tunnel">Kabelbanetunnel</string>
<string name="type.military">Militært</string>
<string name="type.landuse.education">Utdanningsinstitusjon</string>
</resources> </resources>

View File

@@ -1180,7 +1180,7 @@
<string name="type.amenity.bar">Bar</string> <string name="type.amenity.bar">Bar</string>
<string name="type.amenity.bicycle_parking.covered">Parcare acoperită pentru biciclete</string> <string name="type.amenity.bicycle_parking.covered">Parcare acoperită pentru biciclete</string>
<string name="type.amenity.love_hotel">Hotel cu ora</string> <string name="type.amenity.love_hotel">Hotel cu ora</string>
<string name="type.amenity.studio">Garsonieră</string> <string name="type.amenity.studio">Studio Media</string>
<string name="type.amenity.bicycle_repair_station">Stație Reparații Biciclete</string> <string name="type.amenity.bicycle_repair_station">Stație Reparații Biciclete</string>
<string name="type.amenity.car_sharing">Utilizare comună a mașinii</string> <string name="type.amenity.car_sharing">Utilizare comună a mașinii</string>
<string name="type.amenity.dentist">Dentist</string> <string name="type.amenity.dentist">Dentist</string>

View File

@@ -153,4 +153,5 @@
<string name="type.leisure.amusement_arcade">Arkadne igre</string> <string name="type.leisure.amusement_arcade">Arkadne igre</string>
<string name="type.amenity.charging_station.motorcar.small">Polnilno mesto za avtomobile</string> <string name="type.amenity.charging_station.motorcar.small">Polnilno mesto za avtomobile</string>
<string name="type.amenity.childcare">Vrtec</string> <string name="type.amenity.childcare">Vrtec</string>
<string name="type.amenity.cinema">Kino</string>
</resources> </resources>

View File

@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -19,13 +19,13 @@
"@category_recycling": "Recycling|Abfallverwertung|Recyclebares Material|Getrennte Müllsammlung|Müllsortierung|Wiederverwendung", "@category_recycling": "Recycling|Abfallverwertung|Recyclebares Material|Getrennte Müllsammlung|Müllsortierung|Wiederverwendung",
"amenity-bureau_de_change": "3Geldwechselstelle|Wechselstube|Geld|Geldumtausch", "amenity-bureau_de_change": "3Geldwechselstelle|Wechselstube|Geld|Geldumtausch",
"amenity-bar|amenity-pub|@category_eat|@category_nightlife": "2Bar|2Pub|4Kneipe|Bier|Trinken|4Gaststätte|4Bars und Kneipen|Brauhaus|Cocktail-Lounge", "amenity-bar|amenity-pub|@category_eat|@category_nightlife": "2Bar|2Pub|4Kneipe|Bier|Trinken|4Gaststätte|4Bars und Kneipen|Brauhaus|Cocktail-Lounge",
"amenity-cafe|@category_eat": "3Café|3Restaurant|4Kaffee|6Kaffeehaus|Kaffeebar|Cafeteria", "amenity-cafe|@category_eat": "3Café|6Kaffeehaus|Kaffeebar|Cafeteria",
"amenity-fast_food|@category_eat": "4Fast-Food|Takeaway|Restaurant|Café|Pizzeria|3Imbiss|5Essen zum Mitnehmen|Junkfood|7Schnellimbiss", "amenity-fast_food|@category_eat": "4Fast Food|Mitnahme|3Imbiss|Essen zum Mitnehmen|Junkfood|7Schnellimbiss",
"amenity-restaurant|@category_eat": "3Restaurant|3Café|4Gasthaus|Gaststube|6Speiselokal|Gastwirtschaft", "amenity-restaurant|@category_eat": "3Restaurant|4Gasthaus|Gaststube|6Speiselokal|Gastwirtschaft",
"amenity-fuel|@category_fuel": "Tankstation|3Tankstelle", "amenity-fuel|@category_fuel": "Tankstation|3Tankstelle",
"@shop": "3Verbrauchermarkt|5Geschäft|5Laden", "@shop": "3Verbrauchermarkt|5Geschäft|5Laden",
"shop-bakery|shop-pastry|@category_eat|@category_food|@shop": "3Bäckerei|Bäckerladen|Bäcker|4Konditorei", "shop-bakery|shop-pastry|@category_eat|@category_food|@shop": "3Bäckerei|Bäckerladen|Bäcker|4Konditorei|Konditor",
"shop-cosmetics|@category_shopping|@shop": "4Kosmetikgeschäft|Kosmetik|Schönheitspflege", "shop-cosmetics|@category_shopping|@shop": "4Kosmetikgeschäft|Kosmetik|Schönheitspflege|Make Up|Make-Up|Makeup",
"shop-convenience|@category_food|@shop": "5Gemischtwarenladen|Lebensmittelhändler|Lebensmittelhandlung|Lebensmittelgeschäft|4Greißler|4Tante-Emma-Laden", "shop-convenience|@category_food|@shop": "5Gemischtwarenladen|Lebensmittelhändler|Lebensmittelhandlung|Lebensmittelgeschäft|4Greißler|4Tante-Emma-Laden",
"shop-deli|@category_food|@shop": "4Feinkostladen|Feinkostgeschäft", "shop-deli|@category_food|@shop": "4Feinkostladen|Feinkostgeschäft",
"shop-farm|@category_food|@shop": "4Hofladen|4Bauernhofladen", "shop-farm|@category_food|@shop": "4Hofladen|4Bauernhofladen",
@@ -484,7 +484,7 @@
"shop-craft|@shop": "Künstlerbedarf", "shop-craft|@shop": "Künstlerbedarf",
"shop-pasta|@shop": "Nudelgeschäft", "shop-pasta|@shop": "Nudelgeschäft",
"amenity-luggage_locker": "Gepäckschließfach", "amenity-luggage_locker": "Gepäckschließfach",
"amenity-studio": "Studio", "amenity-studio": "Medienstudio|Studio",
"shop-cannabis|@shop": "Cannabis", "shop-cannabis|@shop": "Cannabis",
"man_made-cross": "Kreuz", "man_made-cross": "Kreuz",
"leisure-dance|@category_entertainment": "4Tanz|Tanzschule", "leisure-dance|@category_entertainment": "4Tanz|Tanzschule",

View File

@@ -34,7 +34,7 @@
"Austria_Burgenland":"Burgenland", "Austria_Burgenland":"Burgenland",
"Austria_Carinthia":"Carintia", "Austria_Carinthia":"Carintia",
"Austria_Lower Austria_West":"Austria Inferioară — Vest", "Austria_Lower Austria_West":"Austria Inferioară — Vest",
"Austria_Lower Austria_Wien":"Viena", "Austria_Lower Austria_Wien":"Viena și Austria de Jos",
"Austria_Salzburg":"Salzburg", "Austria_Salzburg":"Salzburg",
"Austria_Styria":"Stiria", "Austria_Styria":"Stiria",
"Austria_Tyrol":"Tirol", "Austria_Tyrol":"Tirol",

View File

@@ -1,10 +1,4 @@
{ {
"World": {
"languages": ["int_name", "en", "default"]
},
"WorldCoasts": {
"languages": ["int_name", "en", "default"]
},
"Abkhazia": { "Abkhazia": {
"languages": ["ab", "ru"] "languages": ["ab", "ru"]
}, },

View File

@@ -389,6 +389,34 @@
<type id="amenity-pharmacy" group="shop"> <type id="amenity-pharmacy" group="shop">
<include group="poi_internet" /> <include group="poi_internet" />
</type> </type>
<!-- Can not be added because it is a complex type -->
<type id="amenity-place_of_worship-buddhist" can_add="no">
<include group="poi_internet" />
</type>
<!-- Can not be added because it is a complex type -->
<type id="amenity-place_of_worship-christian" can_add="no">
<include group="poi_internet" />
</type>
<!-- Can not be added because it is a complex type -->
<type id="amenity-place_of_worship-hindu" can_add="no">
<include group="poi_internet" />
</type>
<!-- Can not be added because it is a complex type -->
<type id="amenity-place_of_worship-jewish" can_add="no">
<include group="poi_internet" />
</type>
<!-- Can not be added because it is a complex type -->
<type id="amenity-place_of_worship-muslim" can_add="no">
<include group="poi_internet" />
</type>
<!-- Can not be added because it is a complex type -->
<type id="amenity-place_of_worship-shinto" can_add="no">
<include group="poi_internet" />
</type>
<!-- Can not be added because it is a complex type -->
<type id="amenity-place_of_worship-taoist" can_add="no">
<include group="poi_internet" />
</type>
<type id="amenity-place_of_worship"> <type id="amenity-place_of_worship">
<include group="poi_internet" /> <include group="poi_internet" />
</type> </type>
@@ -1112,6 +1140,25 @@
<include group="poi_internet" /> <include group="poi_internet" />
<include field="self_service" /> <include field="self_service" />
</type> </type>
<!-- Can not be added because it is a complex type -->
<type id="tourism-information-office" can_add="no">
<include group="poi_internet" />
</type>
<!-- Can not be added because it is a complex type -->
<type id="tourism-information-visitor_centre" can_add="no">
<include group="poi_internet" />
</type>
<!-- Can not be added because it is a complex type -->
<type id="tourism-information-board" can_add="no">
<include field="name" />
</type>
<!-- Can not be added because it is a complex type -->
<type id="tourism-information-map" can_add="no">
<include field="name" />
</type>
<!-- Can not be added because it is a complex type -->
<type id="tourism-information-guidepost" can_add="no">
</type>
<type id="tourism-information"> <type id="tourism-information">
<include group="poi" /> <include group="poi" />
</type> </type>
@@ -1473,19 +1520,6 @@
<tag k="service" v="tyres" /> <tag k="service" v="tyres" />
<include group="poi_internet" /> <include group="poi_internet" />
</type> </type>
<type id="tourism-information-office">
<tag k="tourism" v="information" />
<tag k="information" v="board" />
<include group="poi_internet" />
</type>
<type id="tourism-information-board">
<tag k="tourism" v="information" />
<tag k="information" v="board" />
</type>
<type id="tourism-information-map">
<tag k="tourism" v="information" />
<tag k="information" v="board" />
</type>
<type id="leisure-sports_centre-climbing"> <type id="leisure-sports_centre-climbing">
<tag k="leisure" v="sports_centre" /> <tag k="leisure" v="sports_centre" />
<tag k="sport" v="climbing" /> <tag k="sport" v="climbing" />

View File

@@ -1 +1,14 @@
<svg height="26" viewBox="0 0 42 26" width="42" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#999" transform="matrix(.80255481 0 0 .44010193 .471493 3.853665)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#294c88" transform="matrix(.73067099 0 0 .36912143 2.310205 5.333047)"/></svg> <svg
height="25"
viewBox="0 0 40 25"
width="40"
xmlns="http://www.w3.org/2000/svg">
<path
d="M 39.091407,18.544437 C 38.430061,19.172594 21.322691,24.588874 20,24.588874 c -1.322691,0 -18.4300616,-5.41628 -19.09140734,-6.044437 -0.6613457,-0.628156 -0.6613456,-11.4607175 10e-8,-12.0888738 C 1.5699385,5.8274068 18.677309,0.411126 20,0.411126 c 1.322691,0 18.430061,5.4162809 19.091407,6.0444372 0.661346,0.6281564 0.661346,11.4607178 0,12.0888738 z"
fill="#999999"
style="stroke-width:0.594311" />
<path
d="M 37.381413,17.569578 C 36.779304,18.096424 21.204219,22.639156 20,22.639156 18.79578,22.639156 3.2206952,18.096424 2.6185853,17.569577 2.0164755,17.042731 2.0164756,7.9572668 2.6185854,7.4304207 3.2206953,6.9035747 18.79578,2.3608422 20,2.3608422 c 1.204219,0 16.779304,4.5427325 17.381413,5.0695786 0.60211,0.5268461 0.60211,9.6123102 0,10.1391572 z"
fill="#294c88"
style="stroke-width:0.519333" />
</svg>

Before

Width:  |  Height:  |  Size: 917 B

After

Width:  |  Height:  |  Size: 973 B

View File

@@ -1 +1,14 @@
<svg height="19" viewBox="0 0 30 19" width="30" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#999" transform="matrix(.57716453 0 0 .31650328 .236739 2.944845)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#294c88" transform="matrix(.52546863 0 0 .26545702 1.559066 4.008757)"/></svg> <svg
height="18"
viewBox="0 0 29 18"
width="29"
xmlns="http://www.w3.org/2000/svg">
<path
d="M 28.229757,13.346912 C 27.754145,13.798656 15.451225,17.693823 14.5,17.693823 c -0.951226,0 -13.2541449,-3.895167 -13.72975757,-4.346912 -0.4756127,-0.451744 -0.47561263,-8.2420781 10e-8,-8.6938224 C 1.2458552,4.2013443 13.548774,0.306177 14.5,0.306177 c 0.951225,0 13.254145,3.8951673 13.729757,4.3469117 0.475613,0.4517443 0.475613,8.2420783 0,8.6938233 z"
fill="#999999"
style="stroke-width:0.427404" />
<path
d="m 27,12.645834 c -0.433012,0.378886 -11.633974,3.645833 -12.5,3.645833 -0.866025,0 -12.0669874,-3.266947 -12.5000002,-3.645833 C 1.5669871,12.266948 1.5669872,5.7330535 1.9999999,5.3541673 2.4330126,4.9752812 13.633975,1.708334 14.5,1.708334 c 0.866026,0 12.066988,3.2669473 12.5,3.6458334 0.433013,0.3788861 0.433013,6.9127806 0,7.2916666 z"
fill="#294c88"
style="stroke-width:0.373483" />
</svg>

Before

Width:  |  Height:  |  Size: 917 B

After

Width:  |  Height:  |  Size: 965 B

View File

@@ -1 +1,14 @@
<svg height="26" viewBox="0 0 42 26" width="42" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#999" transform="matrix(.80255481 0 0 .44010193 .471493 3.853665)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#136c30" transform="matrix(.73067099 0 0 .36912143 2.310205 5.333047)"/></svg> <svg
height="25"
viewBox="0 0 40 25"
width="40"
xmlns="http://www.w3.org/2000/svg">
<path
d="M 39.091407,18.544437 C 38.430061,19.172594 21.322691,24.588874 20,24.588874 c -1.322691,0 -18.4300616,-5.41628 -19.09140734,-6.044437 -0.6613457,-0.628156 -0.6613456,-11.4607175 10e-8,-12.0888738 C 1.5699385,5.8274068 18.677309,0.411126 20,0.411126 c 1.322691,0 18.430061,5.4162809 19.091407,6.0444372 0.661346,0.6281564 0.661346,11.4607178 0,12.0888738 z"
fill="#999999"
style="stroke-width:0.594311" />
<path
d="M 37.381413,17.569578 C 36.779304,18.096424 21.204219,22.639156 20,22.639156 18.79578,22.639156 3.2206952,18.096424 2.6185853,17.569577 2.0164755,17.042731 2.0164756,7.9572668 2.6185854,7.4304207 3.2206953,6.9035747 18.79578,2.3608422 20,2.3608422 c 1.204219,0 16.779304,4.5427325 17.381413,5.0695786 0.60211,0.5268461 0.60211,9.6123102 0,10.1391572 z"
fill="#136c30"
style="stroke-width:0.519333" />
</svg>

Before

Width:  |  Height:  |  Size: 917 B

After

Width:  |  Height:  |  Size: 992 B

View File

@@ -1 +1,14 @@
<svg height="19" viewBox="0 0 30 19" width="30" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#999" transform="matrix(.57716453 0 0 .31650328 .236739 2.944845)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#136c30" transform="matrix(.52546863 0 0 .26545702 1.559066 4.008757)"/></svg> <svg
height="18"
viewBox="0 0 29 18"
width="29"
xmlns="http://www.w3.org/2000/svg">
<path
d="M 28.229757,13.346912 C 27.754145,13.798656 15.451225,17.693823 14.5,17.693823 c -0.951226,0 -13.2541449,-3.895167 -13.72975757,-4.346912 -0.4756127,-0.451744 -0.47561263,-8.2420781 10e-8,-8.6938224 C 1.2458552,4.2013443 13.548774,0.306177 14.5,0.306177 c 0.951225,0 13.254145,3.8951673 13.729757,4.3469117 0.475613,0.4517443 0.475613,8.2420783 0,8.6938233 z"
fill="#999999"
style="stroke-width:0.427404" />
<path
d="m 27,12.645834 c -0.433012,0.378886 -11.633974,3.645833 -12.5,3.645833 -0.866025,0 -12.0669874,-3.266947 -12.5000002,-3.645833 C 1.5669871,12.266948 1.5669872,5.7330535 1.9999999,5.3541673 2.4330126,4.9752812 13.633975,1.708334 14.5,1.708334 c 0.866026,0 12.066988,3.2669473 12.5,3.6458334 0.433013,0.3788861 0.433013,6.9127806 0,7.2916666 z"
fill="#136c30"
style="stroke-width:0.373483" />
</svg>

Before

Width:  |  Height:  |  Size: 917 B

After

Width:  |  Height:  |  Size: 984 B

View File

@@ -1 +1,14 @@
<svg height="26" viewBox="0 0 42 26" width="42" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#999" transform="matrix(.80255481 0 0 .44010193 .471493 3.853665)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#9f1a17" transform="matrix(.73067099 0 0 .36912143 2.310205 5.333047)"/></svg> <svg
height="25"
viewBox="0 0 40 25"
width="40"
xmlns="http://www.w3.org/2000/svg">
<path
d="M 39.091407,18.544437 C 38.430061,19.172594 21.322691,24.588874 20,24.588874 c -1.322691,0 -18.4300616,-5.41628 -19.09140734,-6.044437 -0.6613457,-0.628156 -0.6613456,-11.4607175 10e-8,-12.0888738 C 1.5699385,5.8274068 18.677309,0.411126 20,0.411126 c 1.322691,0 18.430061,5.4162809 19.091407,6.0444372 0.661346,0.6281564 0.661346,11.4607178 0,12.0888738 z"
fill="#999999"
style="stroke-width:0.594311" />
<path
d="M 37.381413,17.569578 C 36.779304,18.096424 21.204219,22.639156 20,22.639156 18.79578,22.639156 3.2206952,18.096424 2.6185853,17.569577 2.0164755,17.042731 2.0164756,7.9572668 2.6185854,7.4304207 3.2206953,6.9035747 18.79578,2.3608422 20,2.3608422 c 1.204219,0 16.779304,4.5427325 17.381413,5.0695786 0.60211,0.5268461 0.60211,9.6123102 0,10.1391572 z"
fill="#9f1a17"
style="stroke-width:0.519333" />
</svg>

Before

Width:  |  Height:  |  Size: 917 B

After

Width:  |  Height:  |  Size: 992 B

View File

@@ -1 +1,14 @@
<svg height="19" viewBox="0 0 30 19" width="30" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#999" transform="matrix(.57716453 0 0 .31650328 .236739 2.944845)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#9f1a17" transform="matrix(.52546863 0 0 .26545702 1.559066 4.008757)"/></svg> <svg
height="18"
viewBox="0 0 29 18"
width="29"
xmlns="http://www.w3.org/2000/svg">
<path
d="M 28.229757,13.346912 C 27.754145,13.798656 15.451225,17.693823 14.5,17.693823 c -0.951226,0 -13.2541449,-3.895167 -13.72975757,-4.346912 -0.4756127,-0.451744 -0.47561263,-8.2420781 10e-8,-8.6938224 C 1.2458552,4.2013443 13.548774,0.306177 14.5,0.306177 c 0.951225,0 13.254145,3.8951673 13.729757,4.3469117 0.475613,0.4517443 0.475613,8.2420783 0,8.6938233 z"
fill="#999999"
style="stroke-width:0.427404" />
<path
d="m 27,12.645834 c -0.433012,0.378886 -11.633974,3.645833 -12.5,3.645833 -0.866025,0 -12.0669874,-3.266947 -12.5000002,-3.645833 C 1.5669871,12.266948 1.5669872,5.7330535 1.9999999,5.3541673 2.4330126,4.9752812 13.633975,1.708334 14.5,1.708334 c 0.866026,0 12.066988,3.2669473 12.5,3.6458334 0.433013,0.3788861 0.433013,6.9127806 0,7.2916666 z"
fill="#9f1a17"
style="stroke-width:0.373483" />
</svg>

Before

Width:  |  Height:  |  Size: 917 B

After

Width:  |  Height:  |  Size: 984 B

View File

@@ -1 +1,14 @@
<svg height="26" viewBox="0 0 42 26" width="42" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#212121" transform="matrix(.80255481 0 0 .44010193 .471493 3.853665)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#9f5a17" transform="matrix(.73067099 0 0 .36912143 2.310205 5.333047)"/></svg> <svg
height="25"
viewBox="0 0 40 25"
width="40"
xmlns="http://www.w3.org/2000/svg">
<path
d="M 39.091407,18.544437 C 38.430061,19.172594 21.322691,24.588874 20,24.588874 c -1.322691,0 -18.4300616,-5.41628 -19.09140734,-6.044437 -0.6613457,-0.628156 -0.6613456,-11.4607175 10e-8,-12.0888738 C 1.5699385,5.8274068 18.677309,0.411126 20,0.411126 c 1.322691,0 18.430061,5.4162809 19.091407,6.0444372 0.661346,0.6281564 0.661346,11.4607178 0,12.0888738 z"
fill="#212121"
style="stroke-width:0.594311" />
<path
d="M 37.381413,17.569578 C 36.779304,18.096424 21.204219,22.639156 20,22.639156 18.79578,22.639156 3.2206952,18.096424 2.6185853,17.569577 2.0164755,17.042731 2.0164756,7.9572668 2.6185854,7.4304207 3.2206953,6.9035747 18.79578,2.3608422 20,2.3608422 c 1.204219,0 16.779304,4.5427325 17.381413,5.0695786 0.60211,0.5268461 0.60211,9.6123102 0,10.1391572 z"
fill="#9f5a17"
style="stroke-width:0.519333" />
</svg>

Before

Width:  |  Height:  |  Size: 920 B

After

Width:  |  Height:  |  Size: 992 B

View File

@@ -1 +1,14 @@
<svg height="19" viewBox="0 0 30 19" width="30" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#212121" transform="matrix(.57716453 0 0 .31650328 .236739 2.944845)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#9f5a17" transform="matrix(.52546863 0 0 .26545702 1.559066 4.008757)"/></svg> <svg
height="18"
viewBox="0 0 29 18"
width="29"
xmlns="http://www.w3.org/2000/svg">
<path
d="M 28.229757,13.346912 C 27.754145,13.798656 15.451225,17.693823 14.5,17.693823 c -0.951226,0 -13.2541449,-3.895167 -13.72975757,-4.346912 -0.4756127,-0.451744 -0.47561263,-8.2420781 10e-8,-8.6938224 C 1.2458552,4.2013443 13.548774,0.306177 14.5,0.306177 c 0.951225,0 13.254145,3.8951673 13.729757,4.3469117 0.475613,0.4517443 0.475613,8.2420783 0,8.6938233 z"
fill="#212121"
style="stroke-width:0.427404" />
<path
d="m 27,12.645834 c -0.433012,0.378886 -11.633974,3.645833 -12.5,3.645833 -0.866025,0 -12.0669874,-3.266947 -12.5000002,-3.645833 C 1.5669871,12.266948 1.5669872,5.7330535 1.9999999,5.3541673 2.4330126,4.9752812 13.633975,1.708334 14.5,1.708334 c 0.866026,0 12.066988,3.2669473 12.5,3.6458334 0.433013,0.3788861 0.433013,6.9127806 0,7.2916666 z"
fill="#9f5a17"
style="stroke-width:0.373483" />
</svg>

Before

Width:  |  Height:  |  Size: 920 B

After

Width:  |  Height:  |  Size: 984 B

View File

@@ -0,0 +1,14 @@
<svg
height="21"
viewBox="0 0 37 21"
width="37"
xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(0.27138802,0,0,0.27138802,4.3878227,-0.11668148)">
<path
d="M 52,2.3036748 H -16.168078 V 54.476396 c -4.14e-4,6.304117 4.321485,11.786348 10.4515331,13.257534 L 52,77.809925 109.71665,67.73393 c 6.13001,-1.471227 10.45186,-6.953449 10.45143,-13.257534 V 2.3036748 Z"
style="fill:#999999;fill-opacity:1;stroke:#ffffff;stroke-width:0" />
<path
d="M 52,9.0567997 H -8.0025878 V 53.8068 c -0.1582841,3.383075 1.8308869,6.499251 4.9662002,7.7799 L 52,70.9148 105.86959,61.5867 c 3.59724,-0.863346 6.13337,-4.080505 6.133,-7.7799 V 9.0567997 Z"
style="fill:#294c88;fill-opacity:1;stroke:#00008b;stroke-width:0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 774 B

View File

@@ -0,0 +1,14 @@
<svg
height="15"
viewBox="0 0 26 15"
width="26"
xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(0.19044333,0,0,0.19044333,3.0791026,0.18161878)">
<path
d="M 52,2.3036748 H -16.168078 V 54.476396 c -4.14e-4,6.304117 4.321485,11.786348 10.4515331,13.257534 L 52,77.809925 109.71665,67.73393 c 6.13001,-1.471227 10.45186,-6.953449 10.45143,-13.257534 V 2.3036748 Z"
style="fill:#999999;fill-opacity:1;stroke:#ffffff;stroke-width:0" />
<path
d="M 52,9.0567997 H -8.0025878 V 53.8068 c -0.1582841,3.383075 1.8308869,6.499251 4.9662002,7.7799 L 52,70.9148 105.86959,61.5867 c 3.59724,-0.863346 6.13337,-4.080505 6.133,-7.7799 V 9.0567997 Z"
style="fill:#294c88;fill-opacity:1;stroke:#00008b;stroke-width:0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 773 B

View File

@@ -0,0 +1,14 @@
<svg
height="21"
viewBox="0 0 37 21"
width="37"
xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(0.27138802,0,0,0.27138802,4.3878227,-0.11668148)">
<path
d="M 52,2.3036748 H -16.168078 V 54.476396 c -4.14e-4,6.304117 4.321485,11.786348 10.4515331,13.257534 L 52,77.809925 109.71665,67.73393 c 6.13001,-1.471227 10.45186,-6.953449 10.45143,-13.257534 V 2.3036748 Z"
style="fill:#999999;fill-opacity:1;stroke:#ffffff;stroke-width:0" />
<path
d="M 52,9.0567997 H -8.0025878 V 53.8068 c -0.1582841,3.383075 1.8308869,6.499251 4.9662002,7.7799 L 52,70.9148 105.86959,61.5867 c 3.59724,-0.863346 6.13337,-4.080505 6.133,-7.7799 V 9.0567997 Z"
style="fill:#136c30;fill-opacity:1;stroke:#00008b;stroke-width:0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 774 B

View File

@@ -0,0 +1,14 @@
<svg
height="15"
viewBox="0 0 26 15"
width="26"
xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(0.19044333,0,0,0.19044333,3.0791026,0.18161878)">
<path
d="M 52,2.3036748 H -16.168078 V 54.476396 c -4.14e-4,6.304117 4.321485,11.786348 10.4515331,13.257534 L 52,77.809925 109.71665,67.73393 c 6.13001,-1.471227 10.45186,-6.953449 10.45143,-13.257534 V 2.3036748 Z"
style="fill:#999999;fill-opacity:1;stroke:#ffffff;stroke-width:0" />
<path
d="M 52,9.0567997 H -8.0025878 V 53.8068 c -0.1582841,3.383075 1.8308869,6.499251 4.9662002,7.7799 L 52,70.9148 105.86959,61.5867 c 3.59724,-0.863346 6.13337,-4.080505 6.133,-7.7799 V 9.0567997 Z"
style="fill:#136c30;fill-opacity:1;stroke:#00008b;stroke-width:0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 773 B

View File

@@ -104,6 +104,7 @@ node[leisure=beach_resort],
node[leisure=marina], node[leisure=marina],
node[leisure=sports_centre][sport=scuba_diving], node[leisure=sports_centre][sport=scuba_diving],
node[leisure=sports_centre][sport=swimming], node[leisure=sports_centre][sport=swimming],
node[leisure=water_park],
{text-color: @water_label;text-halo-radius: 0.1;text-halo-opacity: 0.7;text-halo-color: @label_halo_light;} {text-color: @water_label;text-halo-radius: 0.1;text-halo-opacity: 0.7;text-halo-color: @label_halo_light;}
area[amenity=university][name] area[amenity=university][name]

View File

@@ -1 +1,14 @@
<svg height="26" viewBox="0 0 42 26" width="42" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#fff" transform="matrix(.80255481 0 0 .44010193 .471493 3.853665)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#1a5ec1" transform="matrix(.73067099 0 0 .36912143 2.310205 5.333047)"/></svg> <svg
height="25"
viewBox="0 0 40 25"
width="40"
xmlns="http://www.w3.org/2000/svg">
<path
d="M 39.091407,18.544437 C 38.430061,19.172594 21.322691,24.588874 20,24.588874 c -1.322691,0 -18.4300616,-5.41628 -19.09140734,-6.044437 -0.6613457,-0.628156 -0.6613456,-11.4607175 10e-8,-12.0888738 C 1.5699385,5.8274068 18.677309,0.411126 20,0.411126 c 1.322691,0 18.430061,5.4162809 19.091407,6.0444372 0.661346,0.6281564 0.661346,11.4607178 0,12.0888738 z"
fill="#ffffff"
style="stroke-width:0.594311" />
<path
d="M 37.381413,17.569578 C 36.779304,18.096424 21.204219,22.639156 20,22.639156 18.79578,22.639156 3.2206952,18.096424 2.6185853,17.569577 2.0164755,17.042731 2.0164756,7.9572668 2.6185854,7.4304207 3.2206953,6.9035747 18.79578,2.3608422 20,2.3608422 c 1.204219,0 16.779304,4.5427325 17.381413,5.0695786 0.60211,0.5268461 0.60211,9.6123102 0,10.1391572 z"
fill="#1a5ec1"
style="stroke-width:0.519333" />
</svg>

Before

Width:  |  Height:  |  Size: 917 B

After

Width:  |  Height:  |  Size: 973 B

View File

@@ -1 +1,14 @@
<svg height="19" viewBox="0 0 30 19" width="30" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#fff" transform="matrix(.57716453 0 0 .31650328 .236739 2.944845)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#1a5ec1" transform="matrix(.52546863 0 0 .26545702 1.559066 4.008757)"/></svg> <svg
height="18"
viewBox="0 0 29 18"
width="29"
xmlns="http://www.w3.org/2000/svg">
<path
d="M 28.229757,13.346912 C 27.754145,13.798656 15.451225,17.693823 14.5,17.693823 c -0.951226,0 -13.2541449,-3.895167 -13.72975757,-4.346912 -0.4756127,-0.451744 -0.47561263,-8.2420781 10e-8,-8.6938224 C 1.2458552,4.2013443 13.548774,0.306177 14.5,0.306177 c 0.951225,0 13.254145,3.8951673 13.729757,4.3469117 0.475613,0.4517443 0.475613,8.2420783 0,8.6938233 z"
fill="#ffffff"
style="stroke-width:0.427404" />
<path
d="m 27,12.645834 c -0.433012,0.378886 -11.633974,3.645833 -12.5,3.645833 -0.866025,0 -12.0669874,-3.266947 -12.5000002,-3.645833 C 1.5669871,12.266948 1.5669872,5.7330535 1.9999999,5.3541673 2.4330126,4.9752812 13.633975,1.708334 14.5,1.708334 c 0.866026,0 12.066988,3.2669473 12.5,3.6458334 0.433013,0.3788861 0.433013,6.9127806 0,7.2916666 z"
fill="#1a5ec1"
style="stroke-width:0.373483" />
</svg>

Before

Width:  |  Height:  |  Size: 917 B

After

Width:  |  Height:  |  Size: 965 B

View File

@@ -1 +1,14 @@
<svg height="26" viewBox="0 0 42 26" width="42" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#fff" transform="matrix(.80255481 0 0 .44010193 .471493 3.853665)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#309302" transform="matrix(.73067099 0 0 .36912143 2.310205 5.333047)"/></svg> <svg
height="25"
viewBox="0 0 40 25"
width="40"
xmlns="http://www.w3.org/2000/svg">
<path
d="M 39.091407,18.544437 C 38.430061,19.172594 21.322691,24.588874 20,24.588874 c -1.322691,0 -18.4300616,-5.41628 -19.09140734,-6.044437 -0.6613457,-0.628156 -0.6613456,-11.4607175 10e-8,-12.0888738 C 1.5699385,5.8274068 18.677309,0.411126 20,0.411126 c 1.322691,0 18.430061,5.4162809 19.091407,6.0444372 0.661346,0.6281564 0.661346,11.4607178 0,12.0888738 z"
fill="#ffffff"
style="stroke-width:0.594311" />
<path
d="M 37.381413,17.569578 C 36.779304,18.096424 21.204219,22.639156 20,22.639156 18.79578,22.639156 3.2206952,18.096424 2.6185853,17.569577 2.0164755,17.042731 2.0164756,7.9572668 2.6185854,7.4304207 3.2206953,6.9035747 18.79578,2.3608422 20,2.3608422 c 1.204219,0 16.779304,4.5427325 17.381413,5.0695786 0.60211,0.5268461 0.60211,9.6123102 0,10.1391572 z"
fill="#309302"
style="stroke-width:0.519333" />
</svg>

Before

Width:  |  Height:  |  Size: 917 B

After

Width:  |  Height:  |  Size: 992 B

View File

@@ -1 +1,14 @@
<svg height="19" viewBox="0 0 30 19" width="30" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#fff" transform="matrix(.57716453 0 0 .31650328 .236739 2.944845)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#309302" transform="matrix(.52546863 0 0 .26545702 1.559066 4.008757)"/></svg> <svg
height="18"
viewBox="0 0 29 18"
width="29"
xmlns="http://www.w3.org/2000/svg">
<path
d="M 28.229757,13.346912 C 27.754145,13.798656 15.451225,17.693823 14.5,17.693823 c -0.951226,0 -13.2541449,-3.895167 -13.72975757,-4.346912 -0.4756127,-0.451744 -0.47561263,-8.2420781 10e-8,-8.6938224 C 1.2458552,4.2013443 13.548774,0.306177 14.5,0.306177 c 0.951225,0 13.254145,3.8951673 13.729757,4.3469117 0.475613,0.4517443 0.475613,8.2420783 0,8.6938233 z"
fill="#fff"
style="stroke-width:0.427404" />
<path
d="m 27,12.645834 c -0.433012,0.378886 -11.633974,3.645833 -12.5,3.645833 -0.866025,0 -12.0669874,-3.266947 -12.5000002,-3.645833 C 1.5669871,12.266948 1.5669872,5.7330535 1.9999999,5.3541673 2.4330126,4.9752812 13.633975,1.708334 14.5,1.708334 c 0.866026,0 12.066988,3.2669473 12.5,3.6458334 0.433013,0.3788861 0.433013,6.9127806 0,7.2916666 z"
fill="#309302"
style="stroke-width:0.373483" />
</svg>

Before

Width:  |  Height:  |  Size: 917 B

After

Width:  |  Height:  |  Size: 981 B

View File

@@ -1 +1,14 @@
<svg height="26" viewBox="0 0 42 26" width="42" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#fff" transform="matrix(.80255481 0 0 .44010193 .471493 3.853665)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#e63534" transform="matrix(.73067099 0 0 .36912143 2.310205 5.333047)"/></svg> <svg
height="25"
viewBox="0 0 40 25"
width="40"
xmlns="http://www.w3.org/2000/svg">
<path
d="M 39.091407,18.544437 C 38.430061,19.172594 21.322691,24.588874 20,24.588874 c -1.322691,0 -18.4300616,-5.41628 -19.09140734,-6.044437 -0.6613457,-0.628156 -0.6613456,-11.4607175 10e-8,-12.0888738 C 1.5699385,5.8274068 18.677309,0.411126 20,0.411126 c 1.322691,0 18.430061,5.4162809 19.091407,6.0444372 0.661346,0.6281564 0.661346,11.4607178 0,12.0888738 z"
fill="#ffffff"
style="stroke-width:0.594311" />
<path
d="M 37.381413,17.569578 C 36.779304,18.096424 21.204219,22.639156 20,22.639156 18.79578,22.639156 3.2206952,18.096424 2.6185853,17.569577 2.0164755,17.042731 2.0164756,7.9572668 2.6185854,7.4304207 3.2206953,6.9035747 18.79578,2.3608422 20,2.3608422 c 1.204219,0 16.779304,4.5427325 17.381413,5.0695786 0.60211,0.5268461 0.60211,9.6123102 0,10.1391572 z"
fill="#e63534"
style="stroke-width:0.519333" />
</svg>

Before

Width:  |  Height:  |  Size: 917 B

After

Width:  |  Height:  |  Size: 992 B

View File

@@ -1 +1,14 @@
<svg height="19" viewBox="0 0 30 19" width="30" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#fff" transform="matrix(.57716453 0 0 .31650328 .236739 2.944845)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#e63534" transform="matrix(.52546863 0 0 .26545702 1.559066 4.008757)"/></svg> <svg
height="18"
viewBox="0 0 29 18"
width="29"
xmlns="http://www.w3.org/2000/svg">
<path
d="M 28.229757,13.346912 C 27.754145,13.798656 15.451225,17.693823 14.5,17.693823 c -0.951226,0 -13.2541449,-3.895167 -13.72975757,-4.346912 -0.4756127,-0.451744 -0.47561263,-8.2420781 10e-8,-8.6938224 C 1.2458552,4.2013443 13.548774,0.306177 14.5,0.306177 c 0.951225,0 13.254145,3.8951673 13.729757,4.3469117 0.475613,0.4517443 0.475613,8.2420783 0,8.6938233 z"
fill="#fff"
style="stroke-width:0.427404" />
<path
d="m 27,12.645834 c -0.433012,0.378886 -11.633974,3.645833 -12.5,3.645833 -0.866025,0 -12.0669874,-3.266947 -12.5000002,-3.645833 C 1.5669871,12.266948 1.5669872,5.7330535 1.9999999,5.3541673 2.4330126,4.9752812 13.633975,1.708334 14.5,1.708334 c 0.866026,0 12.066988,3.2669473 12.5,3.6458334 0.433013,0.3788861 0.433013,6.9127806 0,7.2916666 z"
fill="#e63534"
style="stroke-width:0.373483" />
</svg>

Before

Width:  |  Height:  |  Size: 917 B

After

Width:  |  Height:  |  Size: 981 B

View File

@@ -1 +1,14 @@
<svg height="26" viewBox="0 0 42 26" width="42" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" transform="matrix(.80255481 0 0 .44010193 .471493 3.853665)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#c97600" transform="matrix(.73067099 0 0 .36912143 2.310205 5.333047)"/></svg> <svg
height="25"
viewBox="0 0 40 25"
width="40"
xmlns="http://www.w3.org/2000/svg">
<path
d="M 39.091407,18.544437 C 38.430061,19.172594 21.322691,24.588874 20,24.588874 c -1.322691,0 -18.4300616,-5.41628 -19.09140734,-6.044437 -0.6613457,-0.628156 -0.6613456,-11.4607175 10e-8,-12.0888738 C 1.5699385,5.8274068 18.677309,0.411126 20,0.411126 c 1.322691,0 18.430061,5.4162809 19.091407,6.0444372 0.661346,0.6281564 0.661346,11.4607178 0,12.0888738 z"
fill=""
style="stroke-width:0.594311" />
<path
d="M 37.381413,17.569578 C 36.779304,18.096424 21.204219,22.639156 20,22.639156 18.79578,22.639156 3.2206952,18.096424 2.6185853,17.569577 2.0164755,17.042731 2.0164756,7.9572668 2.6185854,7.4304207 3.2206953,6.9035747 18.79578,2.3608422 20,2.3608422 c 1.204219,0 16.779304,4.5427325 17.381413,5.0695786 0.60211,0.5268461 0.60211,9.6123102 0,10.1391572 z"
fill="#c97600"
style="stroke-width:0.519333" />
</svg>

Before

Width:  |  Height:  |  Size: 905 B

After

Width:  |  Height:  |  Size: 985 B

View File

@@ -1 +1,14 @@
<svg height="19" viewBox="0 0 30 19" width="30" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" transform="matrix(.57716453 0 0 .31650328 .236739 2.944845)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#c97600" transform="matrix(.52546863 0 0 .26545702 1.559066 4.008757)"/></svg> <svg
height="18"
viewBox="0 0 29 18"
width="29"
xmlns="http://www.w3.org/2000/svg">
<path
d="M 28.229757,13.346912 C 27.754145,13.798656 15.451225,17.693823 14.5,17.693823 c -0.951226,0 -13.2541449,-3.895167 -13.72975757,-4.346912 -0.4756127,-0.451744 -0.47561263,-8.2420781 10e-8,-8.6938224 C 1.2458552,4.2013443 13.548774,0.306177 14.5,0.306177 c 0.951225,0 13.254145,3.8951673 13.729757,4.3469117 0.475613,0.4517443 0.475613,8.2420783 0,8.6938233 z"
fill=""
style="stroke-width:0.427404" />
<path
d="m 27,12.645834 c -0.433012,0.378886 -11.633974,3.645833 -12.5,3.645833 -0.866025,0 -12.0669874,-3.266947 -12.5000002,-3.645833 C 1.5669871,12.266948 1.5669872,5.7330535 1.9999999,5.3541673 2.4330126,4.9752812 13.633975,1.708334 14.5,1.708334 c 0.866026,0 12.066988,3.2669473 12.5,3.6458334 0.433013,0.3788861 0.433013,6.9127806 0,7.2916666 z"
fill="#c97600"
style="stroke-width:0.373483" />
</svg>

Before

Width:  |  Height:  |  Size: 905 B

After

Width:  |  Height:  |  Size: 977 B

View File

@@ -0,0 +1,14 @@
<svg
height="21"
viewBox="0 0 37 21"
width="37"
xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(0.27138802,0,0,0.27138802,4.3878227,-0.11668148)">
<path
d="M 52,2.3036748 H -16.168078 V 54.476396 c -4.14e-4,6.304117 4.321485,11.786348 10.4515331,13.257534 L 52,77.809925 109.71665,67.73393 c 6.13001,-1.471227 10.45186,-6.953449 10.45143,-13.257534 V 2.3036748 Z"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0" />
<path
d="M 52,9.0567997 H -8.0025878 V 53.8068 c -0.1582841,3.383075 1.8308869,6.499251 4.9662002,7.7799 L 52,70.9148 105.86959,61.5867 c 3.59724,-0.863346 6.13337,-4.080505 6.133,-7.7799 V 9.0567997 Z"
style="fill:#1a5ec1;fill-opacity:1;stroke:#00008b;stroke-width:0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 774 B

View File

@@ -0,0 +1,14 @@
<svg
height="15"
viewBox="0 0 26 15"
width="26"
xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(0.19044333,0,0,0.19044333,3.0791026,0.18161878)">
<path
d="M 52,2.3036748 H -16.168078 V 54.476396 c -4.14e-4,6.304117 4.321485,11.786348 10.4515331,13.257534 L 52,77.809925 109.71665,67.73393 c 6.13001,-1.471227 10.45186,-6.953449 10.45143,-13.257534 V 2.3036748 Z"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0" />
<path
d="M 52,9.0567997 H -8.0025878 V 53.8068 c -0.1582841,3.383075 1.8308869,6.499251 4.9662002,7.7799 L 52,70.9148 105.86959,61.5867 c 3.59724,-0.863346 6.13337,-4.080505 6.133,-7.7799 V 9.0567997 Z"
style="fill:#1a5ec1;fill-opacity:1;stroke:#00008b;stroke-width:0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 773 B

View File

@@ -0,0 +1,14 @@
<svg
height="21"
viewBox="0 0 37 21"
width="37"
xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(0.27138802,0,0,0.27138802,4.3878227,-0.11668148)">
<path
d="M 52,2.3036748 H -16.168078 V 54.476396 c -4.14e-4,6.304117 4.321485,11.786348 10.4515331,13.257534 L 52,77.809925 109.71665,67.73393 c 6.13001,-1.471227 10.45186,-6.953449 10.45143,-13.257534 V 2.3036748 Z"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0" />
<path
d="M 52,9.0567997 H -8.0025878 V 53.8068 c -0.1582841,3.383075 1.8308869,6.499251 4.9662002,7.7799 L 52,70.9148 105.86959,61.5867 c 3.59724,-0.863346 6.13337,-4.080505 6.133,-7.7799 V 9.0567997 Z"
style="fill:#309302;fill-opacity:1;stroke:#00008b;stroke-width:0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 774 B

View File

@@ -0,0 +1,14 @@
<svg
height="15"
viewBox="0 0 26 15"
width="26"
xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(0.19044333,0,0,0.19044333,3.0791026,0.18161878)">
<path
d="M 52,2.3036748 H -16.168078 V 54.476396 c -4.14e-4,6.304117 4.321485,11.786348 10.4515331,13.257534 L 52,77.809925 109.71665,67.73393 c 6.13001,-1.471227 10.45186,-6.953449 10.45143,-13.257534 V 2.3036748 Z"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0" />
<path
d="M 52,9.0567997 H -8.0025878 V 53.8068 c -0.1582841,3.383075 1.8308869,6.499251 4.9662002,7.7799 L 52,70.9148 105.86959,61.5867 c 3.59724,-0.863346 6.13337,-4.080505 6.133,-7.7799 V 9.0567997 Z"
style="fill:#309302;fill-opacity:1;stroke:#00008b;stroke-width:0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 773 B

View File

@@ -591,5 +591,5 @@
"existence_confirmed_time_ago" = "Existence confirmed %@"; "existence_confirmed_time_ago" = "Existence confirmed %@";
"offline_explanation_text" = "Hai que descargar un mapa para ver e navegar polo área.\nDescarga os mapas para as zonas polas que vas viaxar."; "offline_explanation_text" = "Hai que descargar un mapa para ver e navegar polo área.\nDescarga os mapas para as zonas polas que vas viaxar.";
"offline_explanation_title" = "Mapas sen conexión"; "offline_explanation_title" = "Mapas sen conexión";
"avoid_steps" = "Evitar pasos"; "avoid_steps" = "Evitar escaleiras";
"editor_place_doesnt_exist_description" = "Describe a aparencia do lugar para enviar unha nota co erro á comunidade OpenStreetMap"; "editor_place_doesnt_exist_description" = "Describe a aparencia do lugar para enviar unha nota co erro á comunidade OpenStreetMap";

View File

@@ -662,7 +662,7 @@
"type.landuse.religious" = "Religiøst område"; "type.landuse.religious" = "Religiøst område";
"type.landuse.commercial" = "Næringsområde"; "type.landuse.commercial" = "Næringsområde";
"type.landuse.construction" = "Byggeplass"; "type.landuse.construction" = "Byggeplass";
"type.landuse.education" = "Educational Facility"; "type.landuse.education" = "Utdanningsinstitusjon";
"type.landuse.farmland" = "Jordbruksområde"; "type.landuse.farmland" = "Jordbruksområde";
"type.landuse.farmyard" = "Bondegård"; "type.landuse.farmyard" = "Bondegård";
"type.landuse.field" = "Field"; "type.landuse.field" = "Field";
@@ -760,7 +760,7 @@
"type.man_made.water_well.drinking_water_no" = "Brønn"; "type.man_made.water_well.drinking_water_no" = "Brønn";
"type.man_made.windmill" = "Vindmølle"; "type.man_made.windmill" = "Vindmølle";
"type.man_made.works" = "Industrial Works"; "type.man_made.works" = "Industrial Works";
"type.military" = "Military"; "type.military" = "Militært";
"type.military.bunker" = "Bunker"; "type.military.bunker" = "Bunker";
"type.mountain_pass" = "Fjellpass"; "type.mountain_pass" = "Fjellpass";
"type.natural" = "Natur"; "type.natural" = "Natur";
@@ -892,12 +892,12 @@
"type.railway.abandoned" = "Nedlagt jernbane"; "type.railway.abandoned" = "Nedlagt jernbane";
"type.railway.abandoned.bridge" = "Nedlagt jernbanebru"; "type.railway.abandoned.bridge" = "Nedlagt jernbanebru";
"type.railway.abandoned.tunnel" = "Nedlagt jernbanetunnel"; "type.railway.abandoned.tunnel" = "Nedlagt jernbanetunnel";
"type.railway.construction" = "Railway Construction"; "type.railway.construction" = "Jernbanebygging";
"type.railway.crossing" = "Jernbaneovergang"; "type.railway.crossing" = "Jernbaneovergang";
"type.railway.disused" = "Ubenyttet jernbane"; "type.railway.disused" = "Ubenyttet jernbane";
"type.railway.funicular" = "Kabelbane"; "type.railway.funicular" = "Kabelbane";
"type.railway.funicular.bridge" = "Funicular Bridge"; "type.railway.funicular.bridge" = "Kabelbanebru";
"type.railway.funicular.tunnel" = "Funicular Tunnel"; "type.railway.funicular.tunnel" = "Kabelbanetunnel";
"type.railway.halt" = "Togstasjon"; "type.railway.halt" = "Togstasjon";
"type.railway.level_crossing" = "Planovergang"; "type.railway.level_crossing" = "Planovergang";
"type.railway.light_rail" = "Light Rail"; "type.railway.light_rail" = "Light Rail";
@@ -1198,7 +1198,7 @@
"type.shop.books" = "Bokhandel"; "type.shop.books" = "Bokhandel";
"type.shop.butcher" = "Slakter"; "type.shop.butcher" = "Slakter";
"type.shop.cannabis" = "Cannabisbutikk"; "type.shop.cannabis" = "Cannabisbutikk";
"type.shop.car" = "Bil butikk"; "type.shop.car" = "Bilforhandler";
"type.shop.car_parts" = "Bildeler"; "type.shop.car_parts" = "Bildeler";
"type.shop.car_repair" = "Bilverksted"; "type.shop.car_repair" = "Bilverksted";
"type.shop.car_repair.tyres" = "Dekkreparasjon"; "type.shop.car_repair.tyres" = "Dekkreparasjon";
@@ -1467,7 +1467,7 @@
"type.sport.diving" = "High Diving"; "type.sport.diving" = "High Diving";
"type.highway.ladder" = "Stige"; "type.highway.ladder" = "Stige";
"type.natural.wetland.swamp" = "Sumpskog"; "type.natural.wetland.swamp" = "Sumpskog";
"type.man_made.crane" = "Crane"; "type.man_made.crane" = "Kran";
"type.natural.wetland.saltmarsh" = "Salt Marsh"; "type.natural.wetland.saltmarsh" = "Salt Marsh";
"type.natural.wetland.mangrove" = "Mangrove"; "type.natural.wetland.mangrove" = "Mangrove";
"type.barrier.guard_rail" = "Autovern"; "type.barrier.guard_rail" = "Autovern";
@@ -1482,7 +1482,7 @@
"type.amenity.luggage_locker" = "Bagasjeoppbevaring"; "type.amenity.luggage_locker" = "Bagasjeoppbevaring";
"type.amenity.ranger_station" = "Ranger Station"; "type.amenity.ranger_station" = "Ranger Station";
"type.amenity.bicycle_parking.covered" = "Overbygd sykkelparkering"; "type.amenity.bicycle_parking.covered" = "Overbygd sykkelparkering";
"type.post_office.post_partner" = "Post Partner"; "type.post_office.post_partner" = "Post i butikk";
"type.barrier.wicket_gate" = "Wicket gate"; "type.barrier.wicket_gate" = "Wicket gate";
"type.amenity.animal_shelter" = "Dyrehjem"; "type.amenity.animal_shelter" = "Dyrehjem";
"type.office.security" = "Security Guards Office"; "type.office.security" = "Security Guards Office";

View File

@@ -319,10 +319,10 @@
"report_incorrect_map_bug" = "Raportați sau remediați datele incorecte de pe hartă"; "report_incorrect_map_bug" = "Raportați sau remediați datele incorecte de pe hartă";
/* Button in the About screen */ /* Button in the About screen */
"volunteer" = "Pentru a fi voluntar"; "volunteer" = "Fii voluntar și îmbunătațește CoMaps";
/* "Social media" section header in the About screen */ /* "Social media" section header in the About screen */
"follow_us" = "Urmăriți-ne și contactați-ne"; "follow_us" = "Conectează-te cu noi";
/* Alert text */ /* Alert text */
"email_error_body" = "Clientul de e-mail nu a fost configurat. Te rugăm să-l configurezi sau să ne contactezi la %@"; "email_error_body" = "Clientul de e-mail nu a fost configurat. Te rugăm să-l configurezi sau să ne contactezi la %@";
@@ -1090,6 +1090,6 @@
"pref_mapappearance_title" = "Map Appearance"; "pref_mapappearance_title" = "Map Appearance";
"pref_maplanguage_title" = "Map Language"; "pref_maplanguage_title" = "Map Language";
"transliteration_title_disabled_summary" = "Disabled when always using the local language for the map"; "transliteration_title_disabled_summary" = "Disabled when always using the local language for the map";
"pref_maplanguage_local" = "Local Language"; "pref_maplanguage_local" = "Limbă Locală";
"hours_confirmed_time_ago" = "Confirmed %@"; "hours_confirmed_time_ago" = "Confirmed %@";
"existence_confirmed_time_ago" = "Existence confirmed %@"; "existence_confirmed_time_ago" = "Existence confirmed %@";

View File

@@ -1471,7 +1471,7 @@
"type.natural.wetland.saltmarsh" = "Mlaștină sărată"; "type.natural.wetland.saltmarsh" = "Mlaștină sărată";
"type.natural.wetland.mangrove" = "Pădure de mangrove"; "type.natural.wetland.mangrove" = "Pădure de mangrove";
"type.barrier.guard_rail" = "Barieră de protecție"; "type.barrier.guard_rail" = "Barieră de protecție";
"type.amenity.studio" = "Garsonieră"; "type.amenity.studio" = "Studio Media";
"type.natural.wetland.fen" = "Pajiște mlăștinoasă"; "type.natural.wetland.fen" = "Pajiște mlăștinoasă";
"type.natural.wetland.saltmarsh.tidal" = "Mlaștină sărată de maree"; "type.natural.wetland.saltmarsh.tidal" = "Mlaștină sărată de maree";
"type.natural.wetland.reedbed" = "Stufăriș"; "type.natural.wetland.reedbed" = "Stufăriș";

View File

@@ -377,3 +377,4 @@
"placepage_call_button" = "Klic"; "placepage_call_button" = "Klic";
"today" = "Danes"; "today" = "Danes";
"bookmark_sets" = "Seznami zaznamkov"; "bookmark_sets" = "Seznami zaznamkov";
"about_proposition_3" = "Transparentno in nedobičkonosno";

View File

@@ -152,3 +152,4 @@
"type.aeroway" = "Infrastruktura zračnega prostora"; "type.aeroway" = "Infrastruktura zračnega prostora";
"type.amenity.love_hotel" = "Hotel za zaljubljence"; "type.amenity.love_hotel" = "Hotel za zaljubljence";
"type.amenity.charging_station.motorcar.small" = "Polnilno mesto za avtomobile"; "type.amenity.charging_station.motorcar.small" = "Polnilno mesto za avtomobile";
"type.amenity.cinema" = "Kino";

View File

@@ -12,6 +12,8 @@
<string>NSStringPluralRuleType</string> <string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>d</string> <string>d</string>
<key>zero</key>
<string>Noll bokmärken</string>
<key>one</key> <key>one</key>
<string>%d bokmärke</string> <string>%d bokmärke</string>
<key>other</key> <key>other</key>

View File

@@ -0,0 +1 @@
Navigera Privat

View File

@@ -196,7 +196,7 @@ m2::PointF GetOffset(int offsetX, int offsetY)
bool IsSymbolRoadShield(ftypes::RoadShield const & shield) bool IsSymbolRoadShield(ftypes::RoadShield const & shield)
{ {
return shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Green || shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Blue || shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Red || shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Turkey || shield.m_type == ftypes::RoadShieldType::US_Interstate || shield.m_type == ftypes::RoadShieldType::US_Highway || shield.m_type == ftypes::RoadShieldType::Italy_Autostrada; return shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Green || shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Blue || shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Red || shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Turkey || shield.m_type == ftypes::RoadShieldType::US_Interstate || shield.m_type == ftypes::RoadShieldType::US_Highway || shield.m_type == ftypes::RoadShieldType::Italy_Autostrada || shield.m_type == ftypes::RoadShieldType::Hungary_Green || shield.m_type == ftypes::RoadShieldType::Hungary_Blue;
} }
std::string GetRoadShieldSymbolName(ftypes::RoadShield const & shield, double fontScale) std::string GetRoadShieldSymbolName(ftypes::RoadShield const & shield, double fontScale)
@@ -217,6 +217,10 @@ std::string GetRoadShieldSymbolName(ftypes::RoadShield const & shield, double fo
result = shield.m_name.size() <= 2 ? "shield-us-hw-thin" : "shield-us-hw-wide"; result = shield.m_name.size() <= 2 ? "shield-us-hw-thin" : "shield-us-hw-wide";
else if (shield.m_type == ftypes::RoadShieldType::Italy_Autostrada) else if (shield.m_type == ftypes::RoadShieldType::Italy_Autostrada)
result = "shield-it-a"; result = "shield-it-a";
else if (shield.m_type == ftypes::RoadShieldType::Hungary_Green)
result = "shield-hungary-green";
else if (shield.m_type == ftypes::RoadShieldType::Hungary_Blue)
result = "shield-hungary-blue";
else else
ASSERT(false, ("This shield type doesn't support symbols:", shield.m_type)); ASSERT(false, ("This shield type doesn't support symbols:", shield.m_type));
@@ -321,7 +325,9 @@ dp::Color GetRoadShieldTextColor(dp::Color const & baseColor, ftypes::RoadShield
{RoadShieldType::US_Interstate, kRoadShieldWhiteTextColor}, {RoadShieldType::US_Interstate, kRoadShieldWhiteTextColor},
{RoadShieldType::US_Highway, kRoadShieldBlackTextColor}, {RoadShieldType::US_Highway, kRoadShieldBlackTextColor},
{RoadShieldType::UK_Highway, kRoadShieldUKYellowTextColor}, {RoadShieldType::UK_Highway, kRoadShieldUKYellowTextColor},
{RoadShieldType::Italy_Autostrada, kRoadShieldWhiteTextColor}}; {RoadShieldType::Italy_Autostrada, kRoadShieldWhiteTextColor},
{RoadShieldType::Hungary_Green, kRoadShieldWhiteTextColor},
{RoadShieldType::Hungary_Blue, kRoadShieldWhiteTextColor}};
if (auto const * cl = kColors.Find(shield.m_type); cl) if (auto const * cl = kColors.Find(shield.m_type); cl)
return df::GetColorConstant(*cl); return df::GetColorConstant(*cl);

View File

@@ -142,7 +142,7 @@ void Notes::CreateNote(ms::LatLon const & latLon, std::string const & text)
return; return;
} }
std::lock_guard<std::mutex> g(m_mu); std::lock_guard<std::mutex> g(m_dataAccessMutex);
auto const it = std::find_if(m_notes.begin(), m_notes.end(), [&latLon, &text](Note const & note) auto const it = std::find_if(m_notes.begin(), m_notes.end(), [&latLon, &text](Note const & note)
{ return latLon.EqualDxDy(note.m_point, kTolerance) && text == note.m_note; }); { return latLon.EqualDxDy(note.m_point, kTolerance) && text == note.m_note; });
// No need to add the same note. It works in case when saved note are not uploaded yet. // No need to add the same note. It works in case when saved note are not uploaded yet.
@@ -155,61 +155,56 @@ void Notes::CreateNote(ms::LatLon const & latLon, std::string const & text)
void Notes::Upload(osm::OsmOAuth const & auth) void Notes::Upload(osm::OsmOAuth const & auth)
{ {
// Capture self to keep it from destruction until this thread is done. std::unique_lock<std::mutex> uploadingNotesLock(m_uploadingNotesMutex, std::defer_lock);
auto const self = shared_from_this(); if (!uploadingNotesLock.try_lock()) {
// Do not run more than one uploading task at a time.
LOG(LDEBUG, ("OSM notes upload is already running"));
return;
}
std::unique_lock<std::mutex> dataAccessLock(m_dataAccessMutex);
auto const doUpload = [self, auth]()
{
std::unique_lock<std::mutex> ulock(self->m_mu);
// Size of m_notes is decreased only in this method. // Size of m_notes is decreased only in this method.
auto & notes = self->m_notes; size_t size = m_notes.size();
size_t size = notes.size();
osm::ServerApi06 api(auth); osm::ServerApi06 api(auth);
while (size > 0) while (size > 0)
{ {
try try
{ {
ulock.unlock(); dataAccessLock.unlock();
auto const id = api.CreateNote(notes.front().m_point, notes.front().m_note); auto const id = api.CreateNote(m_notes.front().m_point, m_notes.front().m_note);
ulock.lock(); dataAccessLock.lock();
LOG(LINFO, ("A note uploaded with id", id)); LOG(LINFO, ("A note uploaded with id", id));
} }
catch (osm::ServerApi06::ServerApi06Exception const & e) catch (osm::ServerApi06::ServerApi06Exception const & e)
{ {
LOG(LERROR, ("Can't upload note.", e.Msg())); LOG(LERROR, ("Can't upload note.", e.Msg()));
// We believe that next iterations will suffer from the same error. // Don't attempt upload for other notes as they will likely suffer from the same error.
return; return;
} }
notes.pop_front(); m_notes.pop_front();
--size; --size;
++self->m_uploadedNotesCount; ++m_uploadedNotesCount;
Save(self->m_fileName, self->m_notes, self->m_uploadedNotesCount); Save(m_fileName, m_notes, m_uploadedNotesCount);
} }
};
static auto future = std::async(std::launch::async, doUpload);
auto const status = future.wait_for(std::chrono::milliseconds(0));
if (status == std::future_status::ready)
future = std::async(std::launch::async, doUpload);
} }
std::list<Note> Notes::GetNotes() const std::list<Note> Notes::GetNotes() const
{ {
std::lock_guard<std::mutex> g(m_mu); std::lock_guard<std::mutex> g(m_dataAccessMutex);
return m_notes; return m_notes;
} }
size_t Notes::NotUploadedNotesCount() const size_t Notes::NotUploadedNotesCount() const
{ {
std::lock_guard<std::mutex> g(m_mu); std::lock_guard<std::mutex> g(m_dataAccessMutex);
return m_notes.size(); return m_notes.size();
} }
size_t Notes::UploadedNotesCount() const size_t Notes::UploadedNotesCount() const
{ {
std::lock_guard<std::mutex> g(m_mu); std::lock_guard<std::mutex> g(m_dataAccessMutex);
return m_uploadedNotesCount; return m_uploadedNotesCount;
} }
} // namespace editor } // namespace editor

View File

@@ -46,7 +46,8 @@ private:
explicit Notes(std::string const & fileName); explicit Notes(std::string const & fileName);
std::string const m_fileName; std::string const m_fileName;
mutable std::mutex m_mu; mutable std::mutex m_dataAccessMutex;
mutable std::mutex m_uploadingNotesMutex;
// m_notes keeps the notes that have not been uploaded yet. // m_notes keeps the notes that have not been uploaded yet.
// Once a note has been uploaded, it is removed from m_notes. // Once a note has been uploaded, it is removed from m_notes.

View File

@@ -126,7 +126,7 @@ bool IsObsolete(editor::XMLFeature const & xml, FeatureID const & fid)
} }
} // namespace } // namespace
Editor::Editor() : m_configLoader(m_config), m_notes(editor::Notes::MakeNotes()), m_isUploadingNow(false) Editor::Editor() : m_configLoader(m_config), m_notes(editor::Notes::MakeNotes())
{ {
SetDefaultStorage(); SetDefaultStorage();
} }
@@ -576,18 +576,21 @@ void Editor::UploadChanges(string const & oauthToken, ChangesetTags tags, Finish
if (m_notes->NotUploadedNotesCount()) if (m_notes->NotUploadedNotesCount())
m_notes->Upload(OsmOAuth::ServerAuth(oauthToken)); m_notes->Upload(OsmOAuth::ServerAuth(oauthToken));
auto const features = m_features.Get(); if (!HaveMapEditsToUpload(*m_features.Get()))
if (!HaveMapEditsToUpload(*features))
{ {
LOG(LDEBUG, ("There are no local edits to upload.")); LOG(LDEBUG, ("There are no local edits to upload."));
return; return;
} }
auto upload = [this](string secret, ChangesetTags tags, FinishUploadCallback callback) std::unique_lock<std::mutex> uploadingEditsLock(m_uploadingEditsMutex, std::defer_lock);
{ if (!uploadingEditsLock.try_lock()) {
// Do not run more than one uploading task at a time.
LOG(LDEBUG, ("OSM edits upload is already running"));
return;
}
int uploadedFeaturesCount = 0, errorsCount = 0; int uploadedFeaturesCount = 0, errorsCount = 0;
ChangesetWrapper changeset(secret, std::move(tags)); ChangesetWrapper changeset(oauthToken, std::move(tags));
auto const features = m_features.Get(); auto const features = m_features.Get();
for (auto const & id : *features) for (auto const & id : *features)
@@ -867,18 +870,6 @@ void Editor::UploadChanges(string const & oauthToken, ChangesetTags tags, Finish
result = UploadResult::Error; result = UploadResult::Error;
callback(result); callback(result);
} }
m_isUploadingNow = false;
};
// Do not run more than one uploading task at a time.
if (!m_isUploadingNow)
{
m_isUploadingNow = true;
GetPlatform().RunTask(Platform::Thread::Network, [upload = std::move(upload), oauthToken, tags = std::move(tags),
callback = std::move(callback)]()
{ upload(std::move(oauthToken), std::move(tags), std::move(callback)); });
}
} }
void Editor::SaveUploadedInformation(FeatureID const & fid, UploadInfo const & uploadInfo) void Editor::SaveUploadedInformation(FeatureID const & fid, UploadInfo const & uploadInfo)

View File

@@ -260,7 +260,7 @@ private:
std::unique_ptr<editor::StorageBase> m_storage; std::unique_ptr<editor::StorageBase> m_storage;
std::atomic<bool> m_isUploadingNow; std::mutex m_uploadingEditsMutex;
DECLARE_THREAD_CHECKER(MainThreadChecker); DECLARE_THREAD_CHECKER(MainThreadChecker);
}; // class Editor }; // class Editor

View File

@@ -558,6 +558,14 @@ public:
{} {}
}; };
class HungaryRoadShieldParser : public SimpleRoadShieldParser
{
public:
explicit HungaryRoadShieldParser(std::string const & baseRoadNumber)
: SimpleRoadShieldParser(baseRoadNumber, {{"M", RoadShieldType::Hungary_Blue}}, RoadShieldType::Hungary_Green)
{}
};
class LativaRoadShieldParser : public SimpleRoadShieldParser class LativaRoadShieldParser : public SimpleRoadShieldParser
{ {
public: public:
@@ -874,6 +882,8 @@ RoadShieldsSetT GetRoadShields(std::string const & mwmName, std::string const &
return ItalyRoadShieldParser(roadNumber).GetRoadShields(); return ItalyRoadShieldParser(roadNumber).GetRoadShields();
if (mwmName == "Turkey") if (mwmName == "Turkey")
return TurkeyRoadShieldParser(roadNumber).GetRoadShields(); return TurkeyRoadShieldParser(roadNumber).GetRoadShields();
if (mwmName == "Hungary")
return HungaryRoadShieldParser(roadNumber).GetRoadShields();
if (mwmName == "Lativa") if (mwmName == "Lativa")
return LativaRoadShieldParser(roadNumber).GetRoadShields(); return LativaRoadShieldParser(roadNumber).GetRoadShields();
if (mwmName == "Moldova") if (mwmName == "Moldova")
@@ -974,6 +984,8 @@ std::string DebugPrint(RoadShieldType shieldType)
case RoadShieldType::US_Highway: return "US highway"; case RoadShieldType::US_Highway: return "US highway";
case RoadShieldType::UK_Highway: return "UK highway"; case RoadShieldType::UK_Highway: return "UK highway";
case RoadShieldType::Italy_Autostrada: return "Italy autostrada"; case RoadShieldType::Italy_Autostrada: return "Italy autostrada";
case RoadShieldType::Hungary_Green: return "hungary green";
case RoadShieldType::Hungary_Blue: return "hungary blue";
case RoadShieldType::Hidden: return "hidden"; case RoadShieldType::Hidden: return "hidden";
case RoadShieldType::Count: CHECK(false, ("RoadShieldType::Count is not to be used as a type")); case RoadShieldType::Count: CHECK(false, ("RoadShieldType::Count is not to be used as a type"));
} }

View File

@@ -42,6 +42,8 @@ enum class RoadShieldType
US_Highway, US_Highway,
UK_Highway, UK_Highway,
Italy_Autostrada, Italy_Autostrada,
Hungary_Green,
Hungary_Blue,
Hidden, Hidden,
Count Count
}; };

View File

@@ -11,6 +11,7 @@
#include "base/assert.hpp" #include "base/assert.hpp"
#include "base/buffer_vector.hpp" #include "base/buffer_vector.hpp"
#include <execution>
#include <string> #include <string>
#include <unordered_map> #include <unordered_map>
#include <vector> #include <vector>
@@ -117,27 +118,31 @@ public:
template <class FnT> template <class FnT>
void ForEachEnter(FnT && fn) const void ForEachEnter(FnT && fn) const
{ {
for (auto const & [key, transit] : m_transitions) std::for_each(std::execution::par_unseq, m_transitions.begin(), m_transitions.end(), [&](auto const & pair)
{ {
auto const & [key, transit] = pair;
if (transit.m_forwardIsEnter) if (transit.m_forwardIsEnter)
fn(transit.m_enterIdx, Segment(m_mwmId, key.m_featureId, key.m_segmentIdx, true)); fn(transit.m_enterIdx, Segment(m_mwmId, key.m_featureId, key.m_segmentIdx, true));
if (!transit.m_oneWay && !transit.m_forwardIsEnter) if (!transit.m_oneWay && !transit.m_forwardIsEnter)
fn(transit.m_enterIdx, Segment(m_mwmId, key.m_featureId, key.m_segmentIdx, false)); fn(transit.m_enterIdx, Segment(m_mwmId, key.m_featureId, key.m_segmentIdx, false));
} });
} }
template <class FnT> template <class FnT>
void ForEachExit(FnT && fn) const void ForEachExit(FnT && fn) const
{ {
for (auto const & [key, transit] : m_transitions) std::for_each(std::execution::par_unseq, m_transitions.begin(), m_transitions.end(), [&](auto const & pair)
{ {
auto const & [key, transit] = pair;
if (!transit.m_forwardIsEnter) if (!transit.m_forwardIsEnter)
fn(transit.m_exitIdx, Segment(m_mwmId, key.m_featureId, key.m_segmentIdx, true)); fn(transit.m_exitIdx, Segment(m_mwmId, key.m_featureId, key.m_segmentIdx, true));
if (!transit.m_oneWay && transit.m_forwardIsEnter) if (!transit.m_oneWay && transit.m_forwardIsEnter)
fn(transit.m_exitIdx, Segment(m_mwmId, key.m_featureId, key.m_segmentIdx, false)); fn(transit.m_exitIdx, Segment(m_mwmId, key.m_featureId, key.m_segmentIdx, false));
} });
} }
void GetOutgoingEdgeList(Segment const & segment, EdgeListT & edges) const void GetOutgoingEdgeList(Segment const & segment, EdgeListT & edges) const

View File

@@ -4,16 +4,14 @@
#include "routing/routing_options.hpp" #include "routing/routing_options.hpp"
#include "routing/world_graph.hpp" #include "routing/world_graph.hpp"
#include "platform/settings.hpp"
#include "base/assert.hpp" #include "base/assert.hpp"
#include "base/checked_cast.hpp" #include "base/checked_cast.hpp"
#include "base/exception.hpp"
#include "base/timer.hpp" #include "base/timer.hpp"
#include "geometry/distance_on_sphere.hpp" #include "geometry/distance_on_sphere.hpp"
#include <algorithm> #include <algorithm>
#include <execution>
#include <limits> #include <limits>
#include <utility> #include <utility>
@@ -321,7 +319,9 @@ void IndexGraph::ReconstructJointSegment(astar::VertexData<JointSegment, RouteWe
auto const & weightTimeToParent = parentVertexData.m_realDistance; auto const & weightTimeToParent = parentVertexData.m_realDistance;
auto const & parentJoint = parentVertexData.m_vertex; auto const & parentJoint = parentVertexData.m_vertex;
for (size_t i = 0; i < firstChildren.size(); ++i)
auto const range = std::ranges::views::iota(0uz, firstChildren.size());
std::for_each(std::execution::par_unseq, range.begin(), range.end(), [&, this](auto const i)
{ {
auto const & firstChild = firstChildren[i]; auto const & firstChild = firstChildren[i];
auto const lastPointId = lastPointIds[i]; auto const lastPointId = lastPointIds[i];
@@ -335,22 +335,21 @@ void IndexGraph::ReconstructJointSegment(astar::VertexData<JointSegment, RouteWe
{ return currentPointId < lastPointId ? pointId + 1 : pointId - 1; }; { return currentPointId < lastPointId ? pointId + 1 : pointId - 1; };
if (IsAccessNoForSure(firstChild.GetFeatureId(), weightTimeToParent, true /* useAccessConditional */)) if (IsAccessNoForSure(firstChild.GetFeatureId(), weightTimeToParent, true /* useAccessConditional */))
continue; return;
if (IsAccessNoForSure(parent.GetRoadPoint(isOutgoing), weightTimeToParent, true /* useAccessConditional */)) if (IsAccessNoForSure(parent.GetRoadPoint(isOutgoing), weightTimeToParent, true /* useAccessConditional */))
continue; return;
if (IsUTurn(parent, firstChild) && IsUTurnAndRestricted(parent, firstChild, isOutgoing)) if (IsUTurn(parent, firstChild) && IsUTurnAndRestricted(parent, firstChild, isOutgoing))
continue; return;
if (IsRestricted(parentJoint, parent.GetFeatureId(), firstChild.GetFeatureId(), isOutgoing, parents)) if (IsRestricted(parentJoint, parent.GetFeatureId(), firstChild.GetFeatureId(), isOutgoing, parents))
continue; return;
RouteWeight summaryWeight; RouteWeight summaryWeight;
// Check current JointSegment for bad road access between segments. // Check current JointSegment for bad road access between segments.
RoadPoint rp = firstChild.GetRoadPoint(isOutgoing); RoadPoint rp = firstChild.GetRoadPoint(isOutgoing);
uint32_t start = currentPointId; uint32_t start = currentPointId;
bool noRoadAccess = false;
do do
{ {
// This is optimization: we calculate accesses of road points before calculating weight of // This is optimization: we calculate accesses of road points before calculating weight of
@@ -360,19 +359,13 @@ void IndexGraph::ReconstructJointSegment(astar::VertexData<JointSegment, RouteWe
// until this |rp|. But we assume that segments have small length and inaccuracy will not // until this |rp|. But we assume that segments have small length and inaccuracy will not
// affect user. // affect user.
if (IsAccessNoForSure(rp, weightTimeToParent, true /* useAccessConditional */)) if (IsAccessNoForSure(rp, weightTimeToParent, true /* useAccessConditional */))
{ return;
noRoadAccess = true;
break;
}
start = increment(start); start = increment(start);
rp.SetPointId(start); rp.SetPointId(start);
} }
while (start != lastPointId); while (start != lastPointId);
if (noRoadAccess)
continue;
bool forward = currentPointId < lastPointId; bool forward = currentPointId < lastPointId;
Segment current = firstChild; Segment current = firstChild;
Segment prev = parent; Segment prev = parent;
@@ -396,7 +389,7 @@ void IndexGraph::ReconstructJointSegment(astar::VertexData<JointSegment, RouteWe
jointEdges.emplace_back(isOutgoing ? JointSegment(firstChild, prev) : JointSegment(prev, firstChild), jointEdges.emplace_back(isOutgoing ? JointSegment(firstChild, prev) : JointSegment(prev, firstChild),
summaryWeight); summaryWeight);
} });
} }
void IndexGraph::GetNeighboringEdge(astar::VertexData<Segment, RouteWeight> const & fromVertexData, Segment const & to, void IndexGraph::GetNeighboringEdge(astar::VertexData<Segment, RouteWeight> const & fromVertexData, Segment const & to,

View File

@@ -18,8 +18,6 @@
#include "indexer/feature_meta.hpp" #include "indexer/feature_meta.hpp"
#include "geometry/point2d.hpp"
#include <memory> #include <memory>
#include <optional> #include <optional>
#include <unordered_map> #include <unordered_map>

View File

@@ -13,6 +13,7 @@
#include "3party/skarupke/bytell_hash_map.hpp" // needed despite of IDE warning #include "3party/skarupke/bytell_hash_map.hpp" // needed despite of IDE warning
#include <algorithm> #include <algorithm>
#include <execution>
#include <map> #include <map>
#include <optional> #include <optional>
#include <queue> #include <queue>
@@ -474,7 +475,8 @@ void IndexGraphStarterJoints<Graph>::GetEdgeList(astar::VertexData<Vertex, Weigh
CHECK(it != m_savedWeight.cend(), ("Can not find weight for:", vertex)); CHECK(it != m_savedWeight.cend(), ("Can not find weight for:", vertex));
Weight const weight = it->second; Weight const weight = it->second;
for (size_t i = 0; i < edges.size(); ++i) auto const range = std::ranges::views::iota(0uz, edges.size());
std::for_each(std::execution::par_unseq, range.begin(), range.end(), [&, this](auto const i)
{ {
// Saving weight of current edges for returning in the next iterations. // Saving weight of current edges for returning in the next iterations.
auto & w = edges[i].GetWeight(); auto & w = edges[i].GetWeight();
@@ -490,7 +492,7 @@ void IndexGraphStarterJoints<Graph>::GetEdgeList(astar::VertexData<Vertex, Weigh
// |parentWeights[]|. So the weight of an ith edge is a cached "weight of parent JointSegment" + // |parentWeights[]|. So the weight of an ith edge is a cached "weight of parent JointSegment" +
// "parentWeight[i]". // "parentWeight[i]".
w = weight + parentWeights[i]; w = weight + parentWeights[i];
} });
// Delete useless weight of parent JointSegment. // Delete useless weight of parent JointSegment.
m_savedWeight.erase(vertex); m_savedWeight.erase(vertex);
@@ -498,8 +500,9 @@ void IndexGraphStarterJoints<Graph>::GetEdgeList(astar::VertexData<Vertex, Weigh
else else
{ {
// This needs for correct weights calculation of FakeJointSegments during forward A* search. // This needs for correct weights calculation of FakeJointSegments during forward A* search.
for (size_t i = firstFakeId; i < edges.size(); ++i) auto const range = std::ranges::views::iota(firstFakeId, edges.size());
edges[i].GetWeight() += parentWeights[i]; std::for_each(std::execution::par_unseq, range.begin(), range.end(),
[&edges, &parentWeights](auto const i) { edges[i].GetWeight() += parentWeights[i]; });
} }
auto const vertexMwmId = vertex.GetMwmId(); auto const vertexMwmId = vertex.GetMwmId();
@@ -510,12 +513,12 @@ void IndexGraphStarterJoints<Graph>::GetEdgeList(astar::VertexData<Vertex, Weigh
/// a weight of v1->v2 transition moving backward (v2 ingoing). This is impossible in current (m_savedWeight) /// a weight of v1->v2 transition moving backward (v2 ingoing). This is impossible in current (m_savedWeight)
/// logic, so I moved Cross-MWM penalty into separate block here after _all_ weights calculations. /// logic, so I moved Cross-MWM penalty into separate block here after _all_ weights calculations.
for (auto & e : edges) std::for_each(std::execution::par_unseq, edges.begin(), edges.end(), [&, this](auto & e)
{ {
auto const targetMwmId = e.GetTarget().GetMwmId(); auto const targetMwmId = e.GetTarget().GetMwmId();
if (targetMwmId != kFakeNumMwmId && vertexMwmId != targetMwmId) if (targetMwmId != kFakeNumMwmId && vertexMwmId != targetMwmId)
e.GetWeight() += m_graph.GetCrossBorderPenalty(vertexMwmId, targetMwmId); e.GetWeight() += m_graph.GetCrossBorderPenalty(vertexMwmId, targetMwmId);
} });
} }
} }

View File

@@ -6,6 +6,8 @@ SKIP_MAP_DOWNLOAD="${SKIP_MAP_DOWNLOAD:-}"
SKIP_GENERATE_SYMBOLS="${SKIP_GENERATE_SYMBOLS:-}" SKIP_GENERATE_SYMBOLS="${SKIP_GENERATE_SYMBOLS:-}"
SKIP_GENERATE_DRULES="${SKIP_GENERATE_DRULES:-}" SKIP_GENERATE_DRULES="${SKIP_GENERATE_DRULES:-}"
CMAKE_CONFIG="${CMAKE_CONFIG:-} -U SKIP_QT_GUI -U GENERATOR_TOOL -U USE_PCH -U CMAKE_EXPORT_COMPILE_COMMANDS -U NJOBS -U SKIP_TESTS"
OPT_DEBUG= OPT_DEBUG=
OPT_RELEASE= OPT_RELEASE=
OPT_RELEASEDEBUGINFO= OPT_RELEASEDEBUGINFO=
@@ -63,7 +65,6 @@ done
OPT_TARGET=${@:$OPTIND} OPT_TARGET=${@:$OPTIND}
CMAKE_CONFIG="${CMAKE_CONFIG:-} -U SKIP_QT_GUI -U GENERATOR_TOOL"
if [ "$OPT_TARGET" != "desktop" -a -z "$OPT_DESIGNER" -a -z "$OPT_STANDALONE"]; then if [ "$OPT_TARGET" != "desktop" -a -z "$OPT_DESIGNER" -a -z "$OPT_STANDALONE"]; then
CMAKE_CONFIG="${CMAKE_CONFIG:-} -DSKIP_QT_GUI=ON" CMAKE_CONFIG="${CMAKE_CONFIG:-} -DSKIP_QT_GUI=ON"
fi fi