Compare commits

...

21 Commits

Author SHA1 Message Date
x7z4w
c19b1c30ec [search] Add synonyms
Signed-off-by: x7z4w <x7z4w@noreply.codeberg.org>
2026-01-09 10:31:21 +01:00
Bastian Greshake Tzovaras
0da7869c5b [translation] manually add lt strings
Signed-off-by: Bastian Greshake Tzovaras <bgreshake@googlemail.com>
Co-authored-by: Bastian Greshake Tzovaras <bgreshake@googlemail.com>
Co-committed-by: Bastian Greshake Tzovaras <bgreshake@googlemail.com>
2026-01-09 09:13:48 +01:00
Yannik Bloscheck
2e3a76fc94 [ios] Increasing base version number to new year
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2026-01-09 09:12:31 +01:00
Dobri Dabar
85d4226eda [android] Add map Local Language
Signed-off-by: Dobri Dabar <dobridabar@noreply.codeberg.org>
2026-01-09 08:41:22 +01:00
Henry Sternberg
3f9dfd6605 [routing] fix/parking-aisle for pedestrian/cycle routing
Signed-off-by: Henry Sternberg <henry@bluelightmaps.com>
Co-authored-by: Henry Sternberg <henry@bluelightmaps.com>
Co-committed-by: Henry Sternberg <henry@bluelightmaps.com>
2026-01-08 21:41:50 +01:00
Jean-Baptiste
fdf698281a [android] Fix tracks description not showed on the place page
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2026-01-08 18:40:19 +01:00
x7z4w
fd57e71ac4 fix
Signed-off-by: x7z4w <x7z4w@noreply.codeberg.org>
2026-01-08 18:24:08 +01:00
thesupertechie
d86049f6d8 [ui][ux] change bookmarks and tracks to favourites
Signed-off-by: thesupertechie <thesupertechie1@gmail.com>
2026-01-08 18:24:08 +01:00
vikiawv
32bba5bc5e Added T-Road to italy
Signed-off-by: vikiawv <vikiawv@noreply.codeberg.org>
2026-01-08 18:21:08 +01:00
vikiawv
3068a468a3 Fixed italy again
Signed-off-by: vikiawv <vikiawv@noreply.codeberg.org>
2026-01-08 18:21:08 +01:00
vikiawv
267378aa23 Fixed two cases for italy
Signed-off-by: vikiawv <vikiawv@noreply.codeberg.org>
2026-01-08 18:21:08 +01:00
Yannik Bloscheck
0a525b7483 Stop interference with county roads in Bavaria
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2026-01-08 18:21:08 +01:00
vikiawv
ea4b39ea47 Readding part that hides roadshield letter for some classification types
Signed-off-by: vikiawv <vikiawv@noreply.codeberg.org>
2026-01-08 18:21:08 +01:00
vikiawv
67f27482b8 Found mistake in Germany/Austria implementation
Signed-off-by: vikiawv <vikiawv@noreply.codeberg.org>
2026-01-08 18:21:08 +01:00
vikiawv
b231f2de6e manually corrected formatting of germany and austria part
Signed-off-by: vikiawv <vikiawv@noreply.codeberg.org>
2026-01-08 18:21:08 +01:00
vikiawv
2609dd5588 Update libs/indexer/road_shields_parser.cpp
Corrected albania
2026-01-08 18:21:08 +01:00
vikiawv
08a87c1962 Reverted Austria and Germany to Simpleroadshieldparser and corrected minor things
Signed-off-by: vikiawv <vikiawv@noreply.codeberg.org>
2026-01-08 18:21:08 +01:00
Chris H. Meyer
09b07c2631 [styles] Add railway=turntable
Signed-off-by: Chris H. Meyer <christian.h.meyer@t-online.de>
2026-01-08 18:20:39 +01:00
matheusgomesms
42f5590210 [iOS] Fix display of long addresses in Place Page
Signed-off-by: matheusgomesms <matheusgomesms@noreply.codeberg.org>
2026-01-08 18:19:40 +01:00
matheusgomesms
f7d2e43f09 [iOS] Remove decimals in current speed
Signed-off-by: matheusgomesms <matheusgomesms@noreply.codeberg.org>
2026-01-08 18:19:30 +01:00
Chris H. Meyer
7617f85442 [editor] enable tactile maps
Signed-off-by: Chris H. Meyer <christian.h.meyer@t-online.de>
2026-01-08 18:18:48 +01:00
28 changed files with 713 additions and 102 deletions

View File

@@ -237,6 +237,7 @@ public class EditorHostFragment
for (LocalizedName name : sNames)
languages.add(name.lang);
args.putStringArrayList(LanguagesFragment.EXISTING_LOCALIZED_NAMES, languages);
args.putBoolean(LanguagesFragment.INCLUDE_LOCAL_LANGUAGE, false);
editWithFragment(Mode.LANGUAGE, R.string.choose_language, args, LanguagesFragment.class, false);
}

View File

@@ -1,11 +1,15 @@
package app.organicmaps.editor;
import static app.organicmaps.sdk.editor.data.Language.DEFAULT_LANG_CODE;
import android.content.res.Configuration;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.core.os.ConfigurationCompat;
import androidx.core.os.LocaleListCompat;
import androidx.fragment.app.Fragment;
import app.organicmaps.R;
import app.organicmaps.base.BaseMwmRecyclerFragment;
import app.organicmaps.sdk.editor.Editor;
import app.organicmaps.sdk.editor.data.Language;
@@ -21,6 +25,7 @@ import java.util.Set;
public class LanguagesFragment extends BaseMwmRecyclerFragment<LanguagesAdapter>
{
final static String EXISTING_LOCALIZED_NAMES = "ExistingLocalizedNames";
final static String INCLUDE_LOCAL_LANGUAGE = "IncludeLocalLanguage";
public interface Listener
{
@@ -34,6 +39,8 @@ public class LanguagesFragment extends BaseMwmRecyclerFragment<LanguagesAdapter>
protected LanguagesAdapter createAdapter()
{
Bundle args = getArguments();
boolean includeLocalLanguage =
args != null ? args.getBoolean(INCLUDE_LOCAL_LANGUAGE) : true;
Set<String> existingLanguages =
args != null ? new HashSet<>(args.getStringArrayList(EXISTING_LOCALIZED_NAMES)) : new HashSet<>();
@@ -68,6 +75,12 @@ public class LanguagesFragment extends BaseMwmRecyclerFragment<LanguagesAdapter>
languages.addAll(0, systemLanguages.stream().filter(Objects::nonNull).toList());
if (includeLocalLanguage) {
String localLanguageLabel = getString(R.string.pref_maplanguage_local);
Language localLanguage = new Language(DEFAULT_LANG_CODE, localLanguageLabel);
languages.add(0, localLanguage);
}
return new LanguagesAdapter(this, languages.toArray(new Language[languages.size()]));
}

View File

@@ -1,6 +1,7 @@
package app.organicmaps.settings;
import static app.organicmaps.leftbutton.LeftButtonsHolder.DISABLE_BUTTON_CODE;
import static app.organicmaps.sdk.editor.data.Language.DEFAULT_LANG_CODE;
import android.annotation.SuppressLint;
import android.content.Intent;
@@ -140,8 +141,13 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment implements La
private void updateMapLanguageCodeSummary()
{
final Preference pref = getPreference(getString(R.string.pref_map_locale));
Locale locale = new Locale(MapLanguageCode.getMapLanguageCode());
pref.setSummary(locale.getDisplayLanguage());
String mapLanguageCode = MapLanguageCode.getMapLanguageCode();
if (mapLanguageCode.equals(DEFAULT_LANG_CODE)) {
pref.setSummary(R.string.pref_maplanguage_local);
} else {
Locale locale = new Locale(mapLanguageCode);
pref.setSummary(locale.getDisplayLanguage());
}
}
private void updateRoutingSettingsPrefsSummary()

View File

@@ -428,8 +428,9 @@ public class PlacePageView extends Fragment
private void updateBookmarkView()
{
boolean enabled = mMapObject.isBookmark() || mMapObject.isTrack();
updateViewFragment(PlacePageBookmarkFragment.class, BOOKMARK_FRAGMENT_TAG, R.id.place_page_bookmark_fragment,
mMapObject.isBookmark());
enabled);
}
private void updateTrackView()

View File

@@ -23,6 +23,7 @@ import app.organicmaps.R;
import app.organicmaps.sdk.bookmarks.data.Bookmark;
import app.organicmaps.sdk.bookmarks.data.BookmarkManager;
import app.organicmaps.sdk.bookmarks.data.MapObject;
import app.organicmaps.sdk.bookmarks.data.Track;
import app.organicmaps.sdk.util.StringUtils;
import app.organicmaps.util.UiUtils;
import app.organicmaps.util.Utils;
@@ -41,6 +42,7 @@ public class PlacePageBookmarkFragment extends Fragment implements View.OnClickL
private PlacePageViewModel mViewModel;
private Bookmark currentBookmark;
private Track currentTrack;
@Nullable
@Override
@@ -88,7 +90,15 @@ public class PlacePageBookmarkFragment extends Fragment implements View.OnClickL
private void updateBookmarkDetails()
{
final String notes = currentBookmark.getBookmarkDescription();
String notes = null;
if (currentBookmark != null)
{
notes = currentBookmark.getBookmarkDescription();
}
if (currentTrack != null)
{
notes = currentTrack.getTrackDescription();
}
if (TextUtils.isEmpty(notes))
{
UiUtils.hide(mTvBookmarkNote);
@@ -120,8 +130,16 @@ public class PlacePageBookmarkFragment extends Fragment implements View.OnClickL
public void onClick(View v)
{
final FragmentActivity activity = requireActivity();
EditBookmarkFragment.editBookmark(currentBookmark.getCategoryId(), currentBookmark.getBookmarkId(), activity,
getChildFragmentManager(), PlacePageBookmarkFragment.this);
if (currentBookmark != null)
{
EditBookmarkFragment.editBookmark(currentBookmark.getCategoryId(), currentBookmark.getBookmarkId(), activity,
getChildFragmentManager(), PlacePageBookmarkFragment.this);
}
else if (currentTrack != null)
{
EditBookmarkFragment.editBookmark(currentTrack.getCategoryId(), currentTrack.getTrackId(), activity,
getChildFragmentManager(), PlacePageBookmarkFragment.this);
}
}
@Override
@@ -152,6 +170,11 @@ public class PlacePageBookmarkFragment extends Fragment implements View.OnClickL
currentBookmark = (Bookmark) mapObject;
updateBookmarkDetails();
}
if (mapObject != null && mapObject.isTrack())
{
currentTrack = (Track) mapObject;
updateBookmarkDetails();
}
}
@Override

View File

@@ -19,8 +19,8 @@
<string name="editor_zip_code">Postcode</string>
<string name="error_enter_correct_zip_code">Enter a valid postcode</string>
<plurals name="bookmarks_places">
<item quantity="one">%d bookmark</item>
<item quantity="other">%d bookmarks</item>
<item quantity="one">%d place</item>
<item quantity="other">%d places</item>
</plurals>
<plurals name="bookmarks_detect_message">
<item quantity="one">%d file was found. You can see it after conversion.</item>

View File

@@ -73,11 +73,11 @@
<!-- "Add new bookmark list" dialog title -->
<string name="add_new_set">Add a New List</string>
<!-- Add Bookmark list dialog - hint when the list name is empty -->
<string name="bookmark_set_name">Bookmark List Name</string>
<string name="bookmark_set_name">List Name</string>
<!-- Should be used in the bookmarks-only context, see bookmarks_and_tracks if tracks are also implied. -->
<string name="bookmarks">Bookmarks</string>
<string name="bookmarks">Places</string>
<!-- "Bookmarks and Tracks" dialog title, also sync it with iphone/plist.txt -->
<string name="bookmarks_and_tracks">Bookmarks and Tracks</string>
<string name="bookmarks_and_tracks">Favorites</string>
<!-- Add bookmark dialog - bookmark name -->
<string name="name">Name</string>
<!-- Editor title above street and house number, duplicates [type.building.address] in types_strings.txt -->
@@ -156,18 +156,18 @@
<!-- Notes field in Bookmarks view -->
<string name="description">Notes</string>
<!-- Email Subject when sharing bookmark list -->
<string name="share_bookmarks_email_subject">CoMaps bookmarks were shared with you</string>
<string name="share_bookmarks_email_subject">My CoMaps Favorites</string>
<string name="share_bookmarks_email_body">Hello!
\n
\nAttached are my bookmarks; please open them in CoMaps. If you don\'t have it installed you can download it here: https://www.comaps.app/download/
\nAttached are my favorites; please open them in CoMaps. If you don\'t have it installed you can download it here: https://www.comaps.app/download/
\n
\nEnjoy travelling with CoMaps!</string>
<!-- message title of loading file -->
<string name="load_kmz_title">Loading Bookmarks</string>
<string name="load_kmz_title">Loading Favorites</string>
<!-- Kmz file successful loading -->
<string name="load_kmz_successful">Bookmarks loaded successfully! You can find them on the map or on the Bookmarks Manager screen.</string>
<string name="load_kmz_successful">Favorites loaded successfully! You can find them on the map or on the Favorites Manager screen.</string>
<!-- Kml file loading failed -->
<string name="load_kmz_failed">Failed to load bookmarks. The file may be corrupted or defective.</string>
<string name="load_kmz_failed">Failed to load favorites. The file may be corrupted or defective.</string>
<!-- Failed to recognize the format of a bookmarks or tracks file. -->
<string name="unknown_file_type">The file type is not recognized by the app:
\n%1$s</string>
@@ -541,7 +541,7 @@
<string name="minute">min</string>
<string name="day">d</string>
<string name="placepage_more_button">More</string>
<string name="placepage_edit_bookmark_button">Edit Bookmark</string>
<string name="placepage_edit_bookmark_button">Edit Saved Place</string>
<string name="placepage_personal_notes_hint">Personal notes (text or html)</string>
<string name="editor_reset_edits_message">Discard all local changes?</string>
<string name="editor_reset_edits_button">Discard changes</string>
@@ -635,17 +635,17 @@
<string name="dialog_error_storage_message">External storage is not accessible. The SD card may have been removed, damaged, or the file system is read-only. Please, check your SD card or contact us at support@comaps.app</string>
<string name="setting_emulate_bad_storage">Emulate bad storage</string>
<string name="error_enter_correct_name">Please enter a correct name</string>
<string name="bookmark_lists">Lists</string>
<string name="bookmark_lists">Favorite Lists</string>
<!-- Do not display all bookmark lists on the map -->
<string name="bookmark_lists_hide_all">Hide all</string>
<string name="bookmark_lists_show_all">Show all</string>
<plurals name="bookmarks_places">
<item quantity="one">%d bookmark</item>
<item quantity="other">%d bookmarks</item>
<item quantity="one">%d saved place</item>
<item quantity="other">%d saved places</item>
</plurals>
<string name="bookmarks_create_new_group">Create a new list</string>
<!-- Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files -->
<string name="bookmarks_import">Import Bookmarks and Tracks</string>
<string name="bookmarks_import">Import Favorites</string>
<string name="bookmarks_error_message_share_general">Unable to share due to an application error</string>
<string name="bookmarks_error_title_share_empty">Sharing error</string>
<string name="bookmarks_error_message_share_empty">Cannot share an empty list</string>
@@ -675,7 +675,7 @@
<string name="subway">Subway</string>
<string name="layers_title">Map Styles and Layers</string>
<string name="bookmarks_empty_list_title">This list is empty</string>
<string name="bookmarks_empty_list_message">To add a bookmark, tap a place on the map and then tap the star icon</string>
<string name="bookmarks_empty_list_message">To save a place, tap a place on the map and then tap the star icon</string>
<string name="category_desc_more">…more</string>
<string name="export_file">Export KMZ</string>
<string name="export_file_gpx">Export GPX</string>
@@ -730,7 +730,7 @@
<!-- max. 10 symbols, both iOS and Android -->
<string name="sort">Sort…</string>
<!-- Android, title, max 20-22 symbols -->
<string name="sort_bookmarks">Sort bookmarks</string>
<string name="sort_bookmarks">Sort favorites</string>
<!-- Android -->
<string name="by_default">By default</string>
<!-- Android -->
@@ -797,8 +797,10 @@
<string name="enable_show_on_lock_screen">Show on the lock screen</string>
<!-- Description in preferences -->
<string name="enable_show_on_lock_screen_description">When enabled, the app will work on the lockscreen even when the device is locked.</string>
<!-- Current language of the map! -->
<!-- Current language of the map -->
<string name="change_map_locale">Map language</string>
<!-- Local language -->
<string name="pref_maplanguage_local">Local Language</string>
<!-- OpenStreetMap text on splash screen -->
<string name="splash_subtitle">Map data from OpenStreetMap</string>
<!-- Telegram group url for the "?" About page -->
@@ -811,7 +813,7 @@
<string name="translated_om_site_url">https://comaps.app/</string>
<!-- Link to OSM wiki for Editor, Profile and About pages -->
<string name="osm_wiki_about_url">https://wiki.openstreetmap.org/wiki/About_OpenStreetMap</string>
<!-- A number of bookmarks and a number of tracks, separated by comma, like: 1 bookmark, 5 tracks -->
<!-- A number of bookmarks and a number of tracks, separated by comma, like: 1 saved place, 5 tracks -->
<string name="comma_separated_pair">%1$s, %2$s</string>
<!-- App Tip #00 -->
<string name="app_tip_00">Thank you for using our community-built maps!</string>
@@ -857,7 +859,7 @@
<string name="browser_not_available">Web browser is not available</string>
<string name="volume">Volume</string>
<!-- Bookmark categories screen, button that opens share dialog to export all bookmarks and tracks -->
<string name="bookmarks_export">Export all Bookmarks and Tracks</string>
<string name="bookmarks_export">Export all Places and Tracks</string>
<!-- button in (app) TTS settings, to open the system TTS settings. -->
<string name="pref_tts_open_system_settings">Speech synthesis system settings</string>
<!-- toast displayed when pressing the "Speech synthesis system settings" button, and the system settings aren't found. -->
@@ -889,7 +891,7 @@
<!-- Title for the "Stop Without Saving" action for the alert when saving a track recording. -->
<string name="continue_recording">Continue Recording</string>
<!-- Title for the alert when saving a track recording. -->
<string name="track_recording_alert_title">Save into Bookmarks and Tracks?</string>
<string name="track_recording_alert_title">Save into Favorites?</string>
<!-- Message for the toast when saving the track recording is finished but nothing to save. -->
<string name="track_recording_toast_nothing_to_save">Track is empty - nothing to save</string>
<!-- Error message when there are no File Manager apps installed to select a folder when importing Bookmarks and Tracks -->
@@ -903,13 +905,13 @@
<string name="pref_left_button_disable">Disable</string>
<!-- Settings "Backup" category: "Backup" title -->
<string name="pref_backup_title">Bookmarks and tracks backup</string>
<string name="pref_backup_title">Backup favorites</string>
<string name="pref_backup_summary">Automatically backup to a folder on your device</string>
<string name="pref_backup_now_title">Backup now</string>
<string name="pref_backup_now_summary">Create a backup immediately</string>
<string name="pref_backup_now_summary_progress">Backup in progress…</string>
<string name="pref_backup_now_summary_ok">Backup completed successfully</string>
<string name="pref_backup_now_summary_empty_lists">No bookmarks and tracks to backup</string>
<string name="pref_backup_now_summary_empty_lists">No places and tracks to backup</string>
<string name="pref_backup_now_summary_failed">Backup failed</string>
<string name="pref_backup_now_summary_folder_unavailable">The backup folder is not available</string>
<string name="pref_backup_status_summary_success">Last successful backup</string>
@@ -933,7 +935,7 @@
<string name="pedestrian">Pedestrian</string>
<string name="bicycle">Bicycle</string>
<string name="ruler">Ruler</string>
<string name="bookmark_color">Bookmark color</string>
<string name="bookmark_color">Color for Favorite</string>
<string name="about_help">About &amp; Help</string>
<string name="open_now">Open now</string>
<string name="closed_now">Closed now</string>

View File

@@ -961,6 +961,7 @@
<string name="type.railway.rail.highspeed">High-Speed Railway</string>
<string name="type.railway.rail.tourism">Touristic Railway</string>
<string name="type.railway.rail.main">Railway</string>
<string name="type.railway.turntable">Railway Turntable</string>
<!-- Includes ordinary railway=rail w/o more specific usage= and service= tags. -->
<string name="type.railway.rail.branch">Railway Branch</string>
<!-- Non-passenger utility tracks: industrial, military, test. -->

View File

@@ -1 +1,543 @@
{}
{
"@category_eat": "",
"@category_food": "",
"@category_transport": "",
"@category_fuel": "",
"@category_parking": "",
"@category_shopping": "",
"@category_hotel": "",
"@category_tourism": "",
"@category_entertainment": "",
"@category_nightlife": "",
"@category_children": "",
"@category_atm": "",
"@category_rv": "",
"amenity-atm|@category_atm": "",
"@category_bank": "",
"@category_secondhand": "",
"amenity-bank|@category_bank": "",
"@category_recycling": "",
"amenity-bureau_de_change": "",
"amenity-studio": "",
"amenity-bar|amenity-pub|@category_eat|@category_nightlife": "",
"amenity-cafe|@category_eat": "",
"amenity-fast_food|@category_eat": "",
"amenity-restaurant|@category_eat": "",
"amenity-fuel|@category_fuel": "",
"@shop": "",
"shop-bakery|shop-pastry|@category_eat|@category_food|@shop": "",
"shop|@shop": "",
"shop-cannabis|@shop": "",
"shop-cosmetics|@category_shopping|@shop": "",
"shop-convenience|@category_food|@shop": "",
"shop-deli|@category_food|@shop": "",
"shop-farm|@category_food|@shop": "",
"shop-garden_centre|@shop": "",
"shop-grocery|@category_food|@shop": "",
"shop-health_food|@category_food|@shop": "",
"shop-hearing_aids|@shop": "",
"shop-mobile_phone|@shop": "",
"shop-florist|@shop": "",
"shop-butcher|@category_food|@shop": "",
"shop-furniture|@shop": "",
"shop-kitchen|@shop": "",
"shop-alcohol|@category_food|@shop": "",
"shop-books|@shop": "",
"shop-shoes|@category_shopping|@shop": "",
"shop-electronics|@shop": "",
"shop-hardware|shop-doityourself|@shop": "",
"shop-houseware|@shop": "",
"shop-jewelry|@category_shopping|@shop": "",
"shop-optician|@shop": "",
"shop-gift|@category_shopping|@shop": "",
"shop-beauty": "",
"shop-beauty-nails": "",
"shop-greengrocer|@category_food|@shop": "",
"shop-sports|@category_shopping|@shop": "",
"shop-supermarket|@category_food|@shop": "",
"shop-mall|@category_shopping|@shop": "",
"shop-department_store|@category_shopping|@shop": "",
"shop-beverages|@category_food|@shop": "",
"shop-computer|@shop": "",
"shop-confectionery|craft-confectionery|@category_food|@shop": "",
"shop-laundry": "",
"shop-toys|@category_children|@shop": "",
"amenity-marketplace|@category_food": "",
"amenity-mobile_money_agent": "",
"amenity-money_transfer": "",
"shop-clothes|@category_shopping|@shop": "",
"shop-caravan|@category_rv|@shop": "",
"shop-car|@shop": "",
"shop-bicycle|@shop": "",
"shop-kiosk": "",
"highway-bus_stop|@category_transport": "",
"railway-tram_stop|@category_transport": "",
"amenity-bus_station|@category_transport": "",
"railway-station|railway-halt|building-train_station|@category_transport": "",
"railway-station-funicular": "",
"railway-station-subway|@category_transport": "",
"amenity-ferry_terminal|@category_transport": "",
"amenity-taxi|@category_transport": "",
"amenity-townhall": "",
"tourism-attraction|@category_tourism": "",
"tourism-artwork": "",
"tourism-artwork-sculpture": "",
"tourism-artwork-statue": "",
"tourism-artwork-painting": "",
"tourism-viewpoint|@category_tourism": "",
"tourism-information": "",
"tourism-picnic_site|amenity-bbq|leisure-picnic_table": "",
"amenity-place_of_worship": "",
"amenity-place_of_worship-christian": "",
"amenity-place_of_worship-muslim": "",
"amenity-place_of_worship-buddhist": "",
"amenity-place_of_worship-hindu": "",
"amenity-place_of_worship-shinto": "",
"amenity-place_of_worship-jewish": "",
"amenity-place_of_worship-taoist": "",
"tourism-museum|@category_tourism": "",
"waterway-waterfall|@category_tourism": "",
"historic-archaeological_site|@category_tourism": "",
"historic-battlefield": "",
"historic-stone": "",
"historic-boundary_stone": "",
"historic-castle|@category_tourism": "",
"historic-city_gate|@category_tourism": "",
"historic-citywalls|@category_tourism": "",
"historic-fort|@category_tourism": "",
"historic-gallows|@category_tourism": "",
"historic-memorial|@category_tourism": "",
"historic-memorial-cross": "",
"historic-memorial-plaque": "",
"historic-memorial-sculpture|@category_tourism": "",
"historic-memorial-statue|@category_tourism": "",
"historic-memorial-stolperstein": "",
"historic-memorial-war_memorial|@category_tourism": "",
"historic-monument|@category_tourism": "",
"historic-pillory|@category_tourism": "",
"historic-cannon": "",
"historic-anchor": "",
"historic-ruins|@category_tourism": "",
"historic-mine": "",
"historic-ship|@category_tourism": "",
"historic-wreck": "",
"historic-locomotive|@category_tourism": "",
"historic-tank|@category_tourism": "",
"historic-aircraft|@category_tourism": "",
"historic-tomb|@category_tourism": "",
"man_made-cross": "",
"historic-wayside_cross": "",
"historic-wayside_shrine": "",
"leisure-dog_park": "",
"leisure-dance|@category_entertainment": "",
"leisure-garden": "",
"leisure-firepit": "",
"amenity-bench|amenity-bench-backless": "",
"amenity-boat_rental": "",
"amenity-bicycle_rental": "",
"amenity-bicycle_repair_station": "",
"amenity-car_sharing": "",
"amenity-car_rental": "",
"amenity-motorcycle_rental": "",
"amenity-cinema|@category_entertainment": "",
"leisure-bowling_alley|@category_entertainment": "",
"amenity-theatre|@category_entertainment": "",
"amenity-nightclub|@category_entertainment|@category_nightlife": "",
"amenity-brothel": "",
"amenity-love_hotel": "",
"@gambling": "",
"amenity-gambling|@gambling": "",
"amenity-casino|@category_entertainment|@category_nightlife|@gambling": "",
"leisure-adult_gaming_centre|@gambling": "",
"leisure-amusement_arcade|@category_entertainment": "",
"amenity-college": "",
"amenity-fire_station": "",
"amenity-fountain": "",
"amenity-grave_yard|landuse-cemetery": "",
"shop-funeral_directors": "",
"@category_hospital": "",
"amenity-hospital|@category_hospital": "",
"amenity-clinic|@category_hospital": "",
"amenity-doctors|@category_hospital": "",
"amenity-dentist": "",
"healthcare-laboratory": "",
"healthcare-physiotherapist": "",
"healthcare-alternative": "",
"healthcare-audiologist": "",
"healthcare-blood_donation": "",
"healthcare-optometrist": "",
"healthcare-podiatrist": "",
"healthcare-psychotherapist": "",
"healthcare-sample_collection": "",
"healthcare-speech_therapist": "",
"amenity-hunting_stand": "",
"amenity-kindergarten": "",
"amenity-library": "",
"amenity-parking|amenity-parking_entrance|@category_parking": "",
"@category_pharmacy": "",
"amenity-pharmacy|@category_pharmacy": "",
"@category_post": "",
"amenity-post_box|@category_post": "",
"amenity-post_office|post_office-post_partner|@category_post": "",
"amenity-vehicle_inspection": "",
"amenity-waste_disposal": "",
"amenity-recycling-centre|@category_recycling": "",
"amenity-recycling-container|amenity-recycling|@category_recycling": "",
"recycling-batteries|@category_recycling": "",
"recycling-clothes|@category_recycling": "",
"recycling-glass_bottles|@category_recycling": "",
"recycling-paper|@category_recycling": "",
"recycling-plastic|@category_recycling": "",
"recycling-plastic_bottles|@category_recycling": "",
"recycling-scrap_metal|@category_recycling": "",
"recycling-small_appliances|@category_recycling": "",
"recycling-cardboard|@category_recycling": "",
"recycling-cans|@category_recycling": "",
"recycling-shoes|@category_recycling": "",
"recycling-green_waste|@category_recycling": "",
"recycling-cartons|@category_recycling": "",
"amenity-sanitary_dump_station|@category_rv": "",
"amenity-school": "",
"amenity-shelter": "",
"amenity-shelter-basic_hut": "",
"amenity-shelter-lean_to": "",
"amenity-stripclub": "",
"amenity-telephone": "",
"@category_toilet": "",
"amenity-toilets|toilets-yes|@category_toilet": "",
"amenity-university": "",
"place-continent": "",
"place-country": "",
"place-city": "",
"place-town": "",
"place-city-capital": "",
"place-county": "",
"place-state": "",
"place-region": "",
"place-island|place-islet": "",
"place-suburb|place-quarter|place-neighbourhood|landuse-residential": "",
"place-hamlet": "",
"place-village": "",
"place-locality": "",
"place-farm": "",
"highway-raceway": "",
"highway-path|highway-footway|highway-steps|highway-cycleway": "",
"highway-pedestrian|highway-primary|highway-primary_link|highway-residential|highway-secondary|highway-secondary_link|highway-tertiary|highway-tertiary_link|highway-service|highway-road|highway-track|highway-trunk|highway-trunk_link|highway-living_street|highway-unclassified|highway-motorway_link|highway-motorway|highway-cycleway": "",
"highway-motorway_junction": "",
"highway-elevator": "",
"@mountain": "",
"natural-peak|@mountain": "",
"natural-saddle|mountain_pass": "",
"natural-strait": "",
"landuse-forest": "",
"leisure-park": "",
"tourism-aquarium|@category_tourism": "",
"tourism-hostel|@category_hotel": "",
"tourism-hotel|@category_hotel": "",
"tourism-guest_house|@category_hotel": "",
"tourism-motel|@category_hotel": "",
"tourism-alpine_hut|@category_hotel": "",
"shop-hairdresser": "",
"aeroway-aerodrome": "",
"leisure-stadium": "",
"leisure-playground|@category_children": "",
"leisure-sports_centre|leisure-sports_centre-sport-american_football|leisure-sports_centre-sport-archery|leisure-sports_centre-sport-athletics|leisure-sports_centre-sport-australian_football|leisure-sports_centre-sport-badminton|leisure-sports_centre-sport-baseball|leisure-sports_centre-sport-basketball|leisure-sports_centre-sport-beachvolleyball|leisure-sports_centre-sport-bowls|leisure-sports_centre-sport-climbing|leisure-sports_centre-sport-cricket|leisure-sports_centre-sport-curling|leisure-sports_centre-sport-equestrian|leisure-sports_centre-sport-field_hockey|leisure-sports_centre-sport-futsal|leisure-sports_centre-sport-golf|leisure-sports_centre-sport-gymnastics|leisure-sports_centre-sport-handball|leisure-sports_centre-sport-ice_hockey|leisure-sports_centre-sport-multi|leisure-sports_centre-sport-padel|leisure-sports_centre-sport-pelota|leisure-sports_centre-sport-scuba_diving|leisure-sports_centre-sport-shooting|leisure-sports_centre-sport-skateboard|leisure-sports_centre-sport-skiing|leisure-sports_centre-sport-soccer|leisure-sports_centre-sport-table_tennis|leisure-sports_centre-sport-tennis|leisure-sports_centre-sport-volleyball|leisure-sports_centre-sport-yoga": "",
"leisure-sports_centre-sport-swimming": "",
"leisure-golf_course": "",
"leisure-miniature_golf": "",
"leisure-escape_game": "",
"leisure-hackerspace": "",
"leisure-pitch": "",
"leisure-swimming_pool": "",
"leisure-swimming_pool-private": "",
"sport-american_football": "",
"sport-archery": "",
"sport-athletics": "",
"sport-australian_football": "",
"sport-baseball": "",
"sport-basketball": "",
"sport-beachvolleyball": "",
"sport-bowls": "",
"sport-chess": "",
"sport-cricket": "",
"sport-curling": "",
"sport-equestrian": "",
"sport-golf": "",
"sport-gymnastics": "",
"sport-handball": "",
"sport-scuba_diving": "",
"sport-shooting": "",
"sport-skateboard": "",
"sport-skiing": "",
"sport-soccer": "",
"sport-swimming": "",
"sport-table_tennis": "",
"sport-tennis": "",
"sport-padel": "",
"sport-volleyball": "",
"sport-9pin": "",
"sport-10pin": "",
"building": "",
"building-address": "",
"@category_police": "",
"amenity-police|@category_police": "",
"office-diplomatic": "",
"natural-bay": "",
"@category_water": "",
"amenity-drinking_water|drinking_water-yes|@category_water": "",
"natural-hot_spring|@category_water": "",
"natural-spring|@category_water": "",
"man_made-water_well|@category_water": "",
"amenity-water_point|@category_water|@category_rv": "",
"man_made-water_tap|@category_water": "",
"@waterbody": "",
"natural-water|@waterbody": "",
"natural-water-basin|landuse-basin|@waterbody": "",
"natural-water-pond|@waterbody": "",
"natural-water-lake|@waterbody": "",
"natural-water-reservoir|landuse-reservoir|@waterbody": "",
"waterway-river|waterway-stream|natural-water-river": "",
"waterway-canal": "",
"shop-car_repair": "",
"tourism-camp_site|@category_hotel": "",
"tourism-caravan_site|@category_rv||@category_hotel": "",
"office": "",
"office-company": "",
"office-government": "",
"office-lawyer": "",
"office-telecommunication": "",
"craft-beekeeper": "",
"craft-blacksmith": "",
"craft-brewery": "",
"craft-caterer": "",
"craft-carpenter": "",
"craft-confectionery": "",
"craft-electrician": "",
"craft-electronics_repair": "",
"craft-gardener": "",
"craft-grinding_mill": "",
"craft-handicraft": "",
"craft-hvac": "",
"craft-metal_construction": "",
"craft-key_cutter": "",
"craft-locksmith": "",
"craft-painter": "",
"craft-photographer": "",
"craft-plumber": "",
"craft-sawmill": "",
"craft-shoemaker": "",
"craft-winery": "",
"craft-tailor": "",
"area:highway-footway|area:highway-pedestrian|area:highway-steps|place-square": "",
"place-sea": "",
"place-ocean": "",
"@category_wifi": "",
"internet_access|internet_access-wlan|@category_wifi": "",
"natural-beach|natural-beach-sand|natural-beach-gravel|leisure-beach_resort": "",
"man_made-lighthouse": "",
"man_made-survey_point": "",
"man_made-flagpole": "",
"man_made-mast": "",
"man_made-communications_tower|man_made-tower-communication": "",
"man_made-petroleum_well": "",
"organic-only|organic-yes": "",
"shop-copyshop": "",
"shop-photo|@shop": "",
"shop-camera|@shop": "",
"shop-travel_agency": "",
"shop-outdoor|@shop": "",
"shop-dry_cleaning": "",
"shop-tyres|@shop": "",
"amenity-car_wash": "",
"man_made-telescope|man_made-telescope-optical|man_made-telescope-radio|man_made-telescope-gamma": "",
"man_made-observatory": "",
"amenity-veterinary": "",
"amenity-animal_shelter": "",
"@charging_station": "",
"amenity-charging_station|@charging_station": "",
"amenity-charging_station-bicycle|@charging_station": "",
"amenity-charging_station-motorcar|amenity-charging_station-motorcar-small|@charging_station": "",
"amenity-childcare": "",
"amenity-bicycle_parking": "",
"amenity-waste_basket": "",
"emergency-phone": "",
"leisure-fitness_centre": "",
"leisure-sauna": "",
"shop-car_repair-tyres|shop-car_repair": "",
"shop-chemist|@shop": "",
"shop-pet|@shop": "",
"tourism-zoo|@category_tourism|@category_children": "",
"attraction-animal": "",
"tourism-information-office|amenity-ranger_station|@category_tourism": "",
"tourism-information-visitor_centre|amenity-ranger_station|@category_tourism": "",
"amenity-community_centre": "",
"amenity-compressed_air": "",
"amenity-courthouse": "",
"amenity-vending_machine": "",
"amenity-vending_machine-cigarettes": "",
"amenity-vending_machine-coffee": "",
"amenity-vending_machine-condoms": "",
"amenity-vending_machine-drinks": "",
"amenity-vending_machine-food|@category_food": "",
"amenity-vending_machine-parking_tickets|@category_parking": "",
"amenity-vending_machine-public_transport_tickets|@category_transport": "",
"amenity-vending_machine-newspapers": "",
"amenity-vending_machine-sweets": "",
"amenity-vending_machine-excrement_bags": "",
"amenity-parcel_locker|@category_post": "",
"shop-outpost": "",
"amenity-vending_machine-fuel|@category_fuel": "",
"building-garage": "",
"highway-rest_area|highway-services": "",
"man_made-chimney": "",
"man_made-crane": "",
"man_made-tower|man_made-flare": "",
"shop-bookmaker|@gambling": "",
"shop-seafood|@category_food|@shop": "",
"shop-second_hand|@category_shopping|@shop|@category_secondhand": "",
"shop-charity|@shop|@category_secondhand": "",
"shop-ticket": "",
"shop-wine|@category_food|@shop": "",
"shop-car_parts|@shop": "",
"tourism-chalet|@category_hotel": "",
"tourism-information-board": "",
"tourism-information-map": "",
"tourism-information-tactile_map": "",
"tourism-information-guidepost": "",
"aerialway-station": "",
"aeroway-helipad": "",
"barrier-border_control": "",
"leisure-water_park|@category_tourism|@category_children": "",
"man_made-water_tower": "",
"man_made-windmill": "",
"natural-cave_entrance": "",
"natural-volcano|@mountain": "",
"office-estate_agent": "",
"waterway-lock_gate": "",
"amenity-public_bookcase": "",
"sport-climbing": "",
"sport-yoga": "",
"leisure-fitness_centre-sport-yoga": "",
"tourism-apartment|@category_hotel": "",
"leisure-resort|@category_hotel": "",
"amenity-biergarten|@category_eat|@category_nightlife": "",
"amenity-driving_school": "",
"amenity-sailing_school": "",
"amenity-flight_school": "",
"amenity-prep_school": "",
"amenity-music_school": "",
"amenity-language_school": "",
"amenity-ice_cream": "",
"amenity-internet_cafe": "",
"amenity-motorcycle_parking": "",
"amenity-parking_space-disabled|@category_parking": "",
"amenity-car_pooling|@category_parking": "",
"amenity-nursing_home": "",
"amenity-payment_terminal": "",
"amenity-payment_centre": "",
"amenity-public_bath": "",
"amenity-shower": "",
"emergency-access_point": "",
"emergency-assembly_point": "",
"emergency-life_ring": "",
"emergency-defibrillator": "",
"emergency-fire_hydrant": "",
"amenity-hydrant": "",
"emergency-lifeguard": "",
"emergency-mountain_rescue": "",
"leisure-fitness_station": "",
"office-insurance": "",
"office-ngo": "",
"shop-erotic|@shop": "",
"shop-beauty-day_spa": "",
"shop-massage": "",
"shop-motorcycle|@shop": "",
"shop-motorcycle_repair": "",
"shop-newsagent": "",
"shop-pawnbroker": "",
"shop-stationery|@shop": "",
"shop-tattoo": "",
"shop-variety_store|@category_shopping|@shop": "",
"shop-video|@shop": "",
"shop-video_games|@shop": "",
"tourism-wilderness_hut|@category_hotel": "",
"tourism-gallery|@category_tourism": "",
"tourism-theme_park|@category_tourism|@category_children": "",
"boundary-national_park|@category_tourism": "",
"leisure-nature_reserve|@category_tourism": "",
"natural-cape": "",
"natural-geyser": "",
"natural-glacier|@category_tourism": "",
"highway-ford": "",
"leisure-marina": "",
"leisure-indoor_play": "",
"piste:type-downhill|piste:type-nordic": "",
"amenity-events_venue": "",
"shop-chocolate|@category_food|@shop": "",
"shop-coffee|@category_food|@shop": "",
"shop-fabric|@shop": "",
"shop-money_lender": "",
"shop-music|@shop": "",
"shop-musical_instrument|@shop": "",
"shop-tea|@shop": "",
"shop-telecommunication|@shop": "",
"shop-antiques|@category_shopping|@shop|@category_secondhand": "",
"shop-art|@category_shopping|@shop": "",
"shop-baby_goods|@category_children|@shop": "",
"shop-bag|@category_shopping|@shop": "",
"shop-cheese|@category_food|@shop": "",
"shop-dairy|@category_food|@shop": "",
"shop-electrical|@shop": "",
"shop-fishing|@shop": "",
"shop-interior_decoration|@shop": "",
"shop-lighting|@shop": "",
"shop-lottery|@gambling": "",
"shop-medical_supply|@shop": "",
"shop-nutrition_supplements|@shop": "",
"shop-paint|@shop": "",
"shop-perfumery|@category_shopping|@shop": "",
"shop-sewing|@shop": "",
"shop-storage_rental": "",
"shop-tobacco|@shop": "",
"shop-trade|@shop": "",
"shop-watches|@category_shopping|@shop": "",
"shop-wholesale|@shop": "",
"leisure-track": "",
"leisure-bandstand": "",
"power-plant": "",
"power-generator-wind": "",
"shop-auction|@category_secondhand": "",
"shop-collector|@category_shopping|@category_secondhand": "",
"man_made-cairn": "",
"wheelchair-yes": "",
"amenity-social_facility": "",
"social_facility-soup_kitchen": "",
"social_facility-food_bank": "",
"amenity-food_sharing": "",
"amenity-give_box": "",
"leisure-sports_hall": "",
"amenity-arts_centre|@category_tourism": "",
"amenity-prison": "",
"amenity-exhibition_centre": "",
"shop-bathroom_furnishing|@shop": "",
"shop-bed|@shop": "",
"shop-boutique|@shop": "",
"amenity-food_court": "",
"shop-curtain|@shop": "",
"shop-gas|@shop": "",
"shop-pet_grooming": "",
"shop-hifi|@shop": "",
"amenity-conference_centre": "",
"shop-herbalist|@shop": "",
"shop-appliance|@shop": "",
"shop-agrarian|@shop": "",
"shop-fashion_accessories|@shop": "",
"amenity-waste_transfer_station": "",
"shop-carpet|@shop": "",
"shop-craft|@shop": "",
"shop-pasta|@shop": "",
"attraction-amusement_ride|attraction-carousel|attraction-roller_coaster|attraction-maze|attraction-historic|attraction-big_wheel|attraction-bumper_car|@category_children": "",
"amenity-luggage_locker": "",
"office-security": "",
"building-guardhouse": ""
}

View File

@@ -1167,6 +1167,9 @@
<type id="tourism-information-map">
<include field="name" />
</type>
<type id="tourism-information-tactile_map">
<include field="name" />
</type>
<type id="tourism-information-guidepost">
</type>
<!-- Too generic to add -->

View File

@@ -351,7 +351,7 @@ sport|basketball;242;
amenity|cinema;243;
amenity|theatre;244;
sport|chess;245;
deprecated:railway|spur:06.2023;246;x
railway|turntable;246;
aerialway|station;247;
landuse|brownfield;248;
aeroway|apron;249;
Can't render this file because it contains an unexpected character in line 7 and column 16.

View File

@@ -1198,6 +1198,7 @@ line|z15-[railway=preserved],
line|z16-[railway=miniature],
line|z16-[railway=disused],
line|z16-[railway=abandoned],
line|z17-[railway=turntable],
{color: @railway; opacity: 0.7;}
line|z13-[railway=light_rail][!tunnel],
@@ -1381,6 +1382,9 @@ line|z15-[railway=construction],
line|z16-[railway=disused],
{width: 1;dashes: 1.8,5.4;}
line|z17-[railway=turntable],
{width: 1.6;}
/* 9.2 Rail tunnel 14-22 ZOOM */
line|z12[railway=rail][tunnel?],

View File

@@ -305,6 +305,7 @@ railway-miniature-tunnel # line z16-
railway-preserved # line z15-
railway-preserved-bridge # line z15- (also has line::bridgeblack z16-, line::bridgewhite z15-)
railway-preserved-tunnel # line z15-
railway-turntable # line z17-
=== 160
highway-footway-bridge # line z15- (also has line::bridgeblack z17-, line::bridgewhite z15-, pathtext z15-)

View File

@@ -307,6 +307,7 @@ railway-miniature-tunnel # line z13-
railway-preserved # line z13-
railway-preserved-bridge # line z13- (also has line::bridgeblack z16-, line::bridgewhite z15-)
railway-preserved-tunnel # line z13-
railway-turntable # line z17-
=== 160
highway-footway-bridge # line z11- (also has line::bridgeblack z17-, line::bridgewhite z15-, pathtext z13-)

View File

@@ -722,6 +722,7 @@ line|z16-[railway=disused],
line|z16-[railway=preserved],
line|z16-[railway=miniature],
line|z16-[railway=abandoned],
line|z17-[railway=turntable],
{color: @railway; opacity: 0.6;}
line|z13-[railway=light_rail][!tunnel],
@@ -921,6 +922,9 @@ line|z16-[railway=construction],
line|z16-[railway=disused]
{width: 1;dashes: 1.8,5.4;}
line|z17-[railway=turntable],
{width: 1.6;}
/* 9.2 Rail tunnel 14-22 ZOOM */
line|z14-[railway=rail][tunnel?],

View File

@@ -282,6 +282,7 @@ railway-miniature-tunnel # line z16-
railway-preserved # line z16-
railway-preserved-bridge # line z16- (also has line::bridgeblack z16-, line::bridgewhite z16-)
railway-preserved-tunnel # line z16-
railway-turntable # line z17-
=== 120
highway-motorway-bridge::bridgewhite # line::bridgewhite z13- (also has line z6-, line::bridgeblack z13-, line(casing) z14-, pathtext z10-, shield::shield z10-)

View File

@@ -77,6 +77,8 @@ TagMapping const kVehicleTagMapping = {
{OsmElement::Tag("vehicle", "private"), RoadAccess::Type::Private},
{OsmElement::Tag("vehicle", "destination"), RoadAccess::Type::Destination},
{OsmElement::Tag("vehicle", "permit"), RoadAccess::Type::Permit},
{OsmElement::Tag("service", "parking_aisle"), RoadAccess::Type::Private},
{OsmElement::Tag("amenity", "parking_entrance"), RoadAccess::Type::Private},
};
TagMapping const kCarBarriersTagMapping = {

View File

@@ -32,7 +32,7 @@
*/
- (NSString*) valueAsString {
auto const outString = measurement_utils::ToStringPrecision(self.value, self.value >= 10.0 ? 0 : 1);
auto const outString = measurement_utils::ToStringPrecision(self.value, 0);
return [NSString stringWithUTF8String:outString.c_str()];
}

View File

@@ -3,7 +3,7 @@
"search" = "Search";
/* Used in home screen quick actions. */
"bookmarks_and_tracks" = "Bookmarks and Tracks";
"bookmarks_and_tracks" = "Favourites";
/* Used in home screen quick actions. */
"route" = "Route";

View File

@@ -69,16 +69,16 @@
"add_new_set" = "Add a New List";
/* Add Bookmark list dialog - hint when the list name is empty */
"bookmark_set_name" = "Bookmark List Name";
"bookmark_set_name" = "List Name";
/* "Bookmark Lists" dialog title */
"bookmark_sets" = "Bookmark Lists";
"bookmark_sets" = "Favourite Lists";
/* Should be used in the bookmarks-only context, see bookmarks_and_tracks if tracks are also implied. */
"bookmarks" = "Bookmarks";
"bookmarks" = "Places";
/* "Bookmarks and Tracks" dialog title, also sync it with iphone/plist.txt */
"bookmarks_and_tracks" = "Bookmarks and Tracks";
"bookmarks_and_tracks" = "Favourites";
/* Default bookmark list name */
"core_my_places" = "My Places";
@@ -160,16 +160,16 @@
/* Search category for RV facilities; any changes should be duplicated in categories.txt @category_rv! */
"category_rv" = "RV Facilities";
"share_bookmarks_email_body" = "Hello!\n\nAttached are my bookmarks; please open them in CoMaps. If you don't have it installed you can download it here: https://www.comaps.app/download/\n\nEnjoy travelling with CoMaps!";
"share_bookmarks_email_body" = "Hello!\n\nAttached are my saved places; please open them in CoMaps. If you don't have it installed you can download it here: https://www.comaps.app/download/\n\nEnjoy travelling with CoMaps!";
/* message title of loading file */
"load_kmz_title" = "Loading Bookmarks";
"load_kmz_title" = "Loading Favourites";
/* Kmz file successful loading */
"load_kmz_successful" = "Bookmarks loaded successfully! You can find them on the map or on the Bookmarks Manager screen.";
"load_kmz_successful" = "Favourites loaded successfully! You can find them on the map or on the Favourites Manager screen.";
/* Kml file loading failed */
"load_kmz_failed" = "Failed to load bookmarks. The file may be corrupted or defective.";
"load_kmz_failed" = "Failed to load favourites. The file may be corrupted or defective.";
/* resource for context menu */
"edit" = "Edit";
@@ -405,7 +405,7 @@
"routing_requires_all_map" = "In order to create a route, we need to download and update all the maps from your location to your destination.";
/* bookmark button text */
"bookmark" = "bookmark";
"bookmark" = "place";
"save" = "Save";
"create" = "create";
@@ -704,10 +704,10 @@
"placepage_more_button" = "More";
"book_button" = "Book";
"placepage_call_button" = "Call";
"placepage_edit_bookmark_button" = "Edit Bookmark";
"placepage_bookmark_name_hint" = "Bookmark Name";
"placepage_edit_bookmark_button" = "Edit Saved Place";
"placepage_bookmark_name_hint" = "Place Name";
"placepage_personal_notes_hint" = "Personal notes (text or html)";
"placepage_delete_bookmark_button" = "Delete Bookmark";
"placepage_delete_bookmark_button" = "Delete Saved Place";
"editor_edits_sent_message" = "Your note will be sent to OpenStreetMap";
"editor_comment_hint" = "Comment…";
"editor_reset_edits_message" = "Discard all local changes?";
@@ -796,7 +796,7 @@
"bookmarks_create_new_group" = "Create a new list";
/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */
"bookmarks_import" = "Import Bookmarks and Tracks";
"bookmarks_import" = "Import Favourites";
"downloader_hide_screen" = "Hide Screen";
"downloader_percent" = "%@ (%@ of %@)";
"downloader_process" = "Downloading %@…";
@@ -897,8 +897,8 @@
"dialog_routing_system_error_carplay" = "An error occurred. Please restart the application";
"dialog_routing_rebuild_from_current_location_carplay" = "The route will be rebuilt from your current location";
"dialog_routing_rebuild_for_vehicle_carplay" = "The route will be converted into an automobile one";
"not_all_shown_bookmarks_carplay" = "Not all bookmarks are shown";
"switch_to_phone_bookmarks_carplay" = "Switch to the phone to see all bookmarks";
"not_all_shown_bookmarks_carplay" = "Not all saved places are shown";
"switch_to_phone_bookmarks_carplay" = "Switch to the phone to see all saved places";
"ok" = "OK";
"speedcams_alert_title_carplay_1" = "Speedсams";
"speedcams_alert_title_carplay_2" = "Speed warnings";
@@ -1030,7 +1030,7 @@
"button_layer_outdoor" = "Outdoors";
/* Bookmark categories screen, button that opens share dialog to export all bookmarks and tracks */
"bookmarks_export" = "Export all Bookmarks and Tracks";
"bookmarks_export" = "Export all Favourites";
/* Text for the editing the Track's color button. */
"change_color" = "Change Color";
@@ -1052,7 +1052,7 @@
"enable_icloud_synchronization_title" = "Enable iCloud Synchronization";
/* Message for the "Enable iCloud Synchronization" alert. */
"enable_icloud_synchronization_message" = "iCloud synchronization is an experimental feature under development. Make sure that you have made a backup of all your bookmarks and tracks.";
"enable_icloud_synchronization_message" = "iCloud synchronization is an experimental feature under development. Make sure that you have made a backup of all your saved places and tracks.";
/* Title for the "iCloud Is Disabled" alert. */
"icloud_disabled_title" = "iCloud Is Disabled";
@@ -1115,7 +1115,7 @@
"continue_recording" = "Continue Recording";
/* Title for the alert when saving a track recording. */
"track_recording_alert_title" = "Save into Bookmarks and Tracks?";
"track_recording_alert_title" = "Save into Favourites?";
/* Message for the toast when saving the track recording is finished but nothing to save. */
"track_recording_toast_nothing_to_save" = "Track is empty - nothing to save";

View File

@@ -7,7 +7,7 @@
"search" = "Search";
/* Used in home screen quick actions. */
"bookmarks_and_tracks" = "Bookmarks and Tracks";
"bookmarks_and_tracks" = "Favorites";
/* Used in home screen quick actions. */
"route" = "Route";

View File

@@ -73,16 +73,16 @@
"add_new_set" = "Add a New List";
/* Add Bookmark list dialog - hint when the list name is empty */
"bookmark_set_name" = "Bookmark List Name";
"bookmark_set_name" = "List Name";
/* "Bookmark Lists" dialog title */
"bookmark_sets" = "Bookmark Lists";
"bookmark_sets" = "Favorite Lists";
/* Should be used in the bookmarks-only context, see bookmarks_and_tracks if tracks are also implied. */
"bookmarks" = "Bookmarks";
"bookmarks" = "Places";
/* "Bookmarks and Tracks" dialog title, also sync it with iphone/plist.txt */
"bookmarks_and_tracks" = "Bookmarks and Tracks";
"bookmarks_and_tracks" = "Favorites";
/* Default bookmark list name */
"core_my_places" = "My Places";
@@ -172,16 +172,16 @@
/********** Other translations **********/
"share_bookmarks_email_body" = "Hello!\n\nAttached are my bookmarks; please open them in CoMaps. If you don't have it installed you can download it here: https://www.comaps.app/download/\n\nEnjoy travelling with CoMaps!";
"share_bookmarks_email_body" = "Hello!\n\nAttached are my saved places; please open them in CoMaps. If you don't have it installed you can download it here: https://www.comaps.app/download/\n\nEnjoy travelling with CoMaps!";
/* message title of loading file */
"load_kmz_title" = "Loading Bookmarks";
"load_kmz_title" = "Loading Favorites";
/* Kmz file successful loading */
"load_kmz_successful" = "Bookmarks loaded successfully! You can find them on the map or on the Bookmarks Manager screen.";
"load_kmz_successful" = "Favorites loaded successfully! You can find them on the map or on the Favorites Manager screen.";
/* Kml file loading failed */
"load_kmz_failed" = "Failed to load bookmarks. The file may be corrupted or defective.";
"load_kmz_failed" = "Failed to load favorites. The file may be corrupted or defective.";
/* resource for context menu */
"edit" = "Edit";
@@ -416,7 +416,7 @@
"routing_requires_all_map" = "In order to create a route, we need to download and update all the maps from your location to your destination.";
/* bookmark button text */
"bookmark" = "bookmark";
"bookmark" = "place";
"save" = "Save";
"create" = "create";
@@ -723,10 +723,10 @@
"placepage_more_button" = "More";
"book_button" = "Book";
"placepage_call_button" = "Call";
"placepage_edit_bookmark_button" = "Edit Bookmark";
"placepage_bookmark_name_hint" = "Bookmark Name";
"placepage_edit_bookmark_button" = "Edit Saved Place";
"placepage_bookmark_name_hint" = "Place Name";
"placepage_personal_notes_hint" = "Personal notes (text or html)";
"placepage_delete_bookmark_button" = "Delete Bookmark";
"placepage_delete_bookmark_button" = "Delete Place";
"editor_edits_sent_message" = "Your note will be sent to OpenStreetMap";
"editor_comment_hint" = "Comment…";
"editor_reset_edits_message" = "Discard all local changes?";
@@ -817,7 +817,7 @@
"bookmarks_create_new_group" = "Create a new list";
/* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */
"bookmarks_import" = "Import Bookmarks and Tracks";
"bookmarks_import" = "Import Favorites";
"downloader_hide_screen" = "Hide Screen";
"downloader_percent" = "%@ (%@ of %@)";
"downloader_process" = "Downloading %@…";
@@ -1055,7 +1055,7 @@
"button_layer_outdoor" = "Outdoors";
/* Bookmark categories screen, button that opens share dialog to export all bookmarks and tracks */
"bookmarks_export" = "Export all Bookmarks and Tracks";
"bookmarks_export" = "Export all Favorites";
/* Text for the editing the Track's color button. */
"change_color" = "Change Color";
@@ -1140,7 +1140,7 @@
"continue_recording" = "Continue Recording";
/* Title for the alert when saving a track recording. */
"track_recording_alert_title" = "Save into Bookmarks and Tracks?";
"track_recording_alert_title" = "Save into Favorites?";
/* Message for the toast when saving the track recording is finished but nothing to save. */
"track_recording_toast_nothing_to_save" = "Track is empty - nothing to save";

View File

@@ -1054,6 +1054,7 @@
"type.railway.rail.highspeed" = "High-Speed Railway";
"type.railway.rail.tourism" = "Touristic Railway";
"type.railway.rail.main" = "Railway";
"type.railway.turntable" = "Railway Turntable";
/* Includes ordinary railway=rail w/o more specific usage= and service= tags. */
"type.railway.rail.branch" = "Railway Branch";

View File

@@ -5120,7 +5120,7 @@
"@executable_path/Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 11.0;
MARKETING_VERSION = 2025.06.01;
MARKETING_VERSION = 2026.01.01;
OTHER_SWIFT_FLAGS = "$(inherited)";
PRODUCT_BUNDLE_IDENTIFIER = app.comaps.debug;
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -5155,7 +5155,7 @@
"@executable_path/Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 11.0;
MARKETING_VERSION = 2025.06.01;
MARKETING_VERSION = 2026.01.01;
OTHER_SWIFT_FLAGS = "$(inherited)";
PRODUCT_BUNDLE_IDENTIFIER = app.comaps;
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -5213,7 +5213,7 @@
"@executable_path/../../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 11.0;
MARKETING_VERSION = 2025.06.01;
MARKETING_VERSION = 2026.01.01;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
PRODUCT_BUNDLE_IDENTIFIER = app.comaps.debug.widgetextension;
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -5243,7 +5243,7 @@
"@executable_path/../../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 11.0;
MARKETING_VERSION = 2025.06.01;
MARKETING_VERSION = 2026.01.01;
PRODUCT_BUNDLE_IDENTIFIER = app.comaps.widgetextension;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";

View File

@@ -43,8 +43,8 @@ final class InfoItemView: UIView {
addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(onInfoLabelTap)))
addGestureRecognizer(UILongPressGestureRecognizer(target: self, action: #selector(onInfoLabelLongPress(_:))))
infoLabel.lineBreakMode = .byTruncatingTail
infoLabel.numberOfLines = 1
infoLabel.lineBreakMode = .byWordWrapping
infoLabel.numberOfLines = 0
infoLabel.allowsDefaultTighteningForTruncation = true
infoLabel.isUserInteractionEnabled = false
@@ -66,17 +66,17 @@ final class InfoItemView: UIView {
accessoryButton.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
heightAnchor.constraint(equalToConstant: Constants.viewHeight),
heightAnchor.constraint(greaterThanOrEqualToConstant: Constants.viewHeight),
iconButton.leadingAnchor.constraint(equalTo: leadingAnchor),
iconButton.centerYAnchor.constraint(equalTo: centerYAnchor),
iconButton.widthAnchor.constraint(equalToConstant: Constants.iconButtonSize),
iconButton.topAnchor.constraint(equalTo: topAnchor),
iconButton.bottomAnchor.constraint(equalTo: bottomAnchor),
iconButton.topAnchor.constraint(greaterThanOrEqualTo: topAnchor),
iconButton.bottomAnchor.constraint(lessThanOrEqualTo: bottomAnchor),
infoLabel.leadingAnchor.constraint(equalTo: iconButton.trailingAnchor),
infoLabel.topAnchor.constraint(equalTo: topAnchor),
infoLabel.bottomAnchor.constraint(equalTo: bottomAnchor),
infoLabel.topAnchor.constraint(equalTo: topAnchor, constant: Constants.infoLabelTopBottomSpacing),
infoLabel.bottomAnchor.constraint(equalTo: bottomAnchor, constant: -Constants.infoLabelTopBottomSpacing),
infoLabel.trailingAnchor.constraint(equalTo: accessoryButton.leadingAnchor),
accessoryButton.trailingAnchor.constraint(equalTo: trailingAnchor),

View File

@@ -40,7 +40,8 @@
[bookmarks_and_tracks]
tags = ios
comment = Used in home screen quick actions.
en = Bookmarks and Tracks
en = Favorites
en-GB = Favourites
ar = الإشارات المرجعية والمسارات
az = Əlfəcinlər və qeydlər
be = Закладкі i cцежкі

View File

@@ -507,16 +507,15 @@ private:
// Implementations of "ref" parses for some countries.
class AustriaRoadShieldParser : public HighwayClassRoadShieldParser
class AustriaRoadShieldParser : public SimpleRoadShieldParser
{
public:
explicit AustriaRoadShieldParser(std::string const & baseRoadNumber, HighwayClass const & highwayClass)
: HighwayClassRoadShieldParser(baseRoadNumber, highwayClass,
{{"A", HighwayClass::Motorway, RoadShieldType::Generic_Blue_Bordered},
{"S", HighwayClass::Trunk, RoadShieldType::Generic_Blue_Bordered},
{"B", HighwayClass::Primary, RoadShieldType::Generic_Blue},
{"L", HighwayClass::Secondary, RoadShieldType::Generic_Pill_White_Bordered},
{"L", HighwayClass::Tertiary, RoadShieldType::Generic_Pill_White_Bordered}})
explicit AustriaRoadShieldParser(std::string const & baseRoadNumber)
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Generic_Blue_Bordered},
{"S", RoadShieldType::Generic_Blue_Bordered},
{"B", RoadShieldType::Generic_Blue, false, true},
{"P", RoadShieldType::Generic_Pill_Red_Bordered},
{"L", RoadShieldType::Generic_Pill_White_Bordered, false, true}})
{}
};
@@ -554,9 +553,12 @@ class ItalyRoadShieldParser : public SimpleRoadShieldParser
public:
explicit ItalyRoadShieldParser(std::string const & baseRoadNumber)
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Italy_Autostrada},
{"SS", RoadShieldType::Generic_Blue},
{"SR", RoadShieldType::Generic_Blue},
{"SP", RoadShieldType::Generic_Blue}})
{"T", RoadShieldType::Italy_Autostrada},
{"RA", RoadShieldType::Generic_Green_Bordered},
{"NSA", RoadShieldType::Generic_Blue_Bordered},
{"SS", RoadShieldType::Generic_Blue_Bordered},
{"SR", RoadShieldType::Generic_Blue_Bordered},
{"SP", RoadShieldType::Generic_Blue_Bordered}})
{}
};
@@ -601,6 +603,8 @@ public:
{"N", RoadShieldType::Generic_White_Bordered},
{"EN", RoadShieldType::Generic_White_Bordered},
{"R", RoadShieldType::Generic_Orange},
{"IP", RoadShieldType::Generic_Red},
{"IC", RoadShieldType::Generic_White_Bordered},
{"EM", RoadShieldType::Generic_Orange},
{"CM", RoadShieldType::Generic_Orange}})
{}
@@ -698,17 +702,15 @@ public:
{}
};
class GermanyRoadShieldParser : public HighwayClassRoadShieldParser
class GermanyRoadShieldParser : public SimpleRoadShieldParser
{
public:
explicit GermanyRoadShieldParser(std::string const & baseRoadNumber, HighwayClass const & highwayClass)
: HighwayClassRoadShieldParser(baseRoadNumber, highwayClass,
{{"A", HighwayClass::Motorway, RoadShieldType::Highway_Hexagon_Blue, false, true},
{"D", HighwayClass::Motorway, RoadShieldType::Hidden},
{"B", HighwayClass::Trunk, RoadShieldType::Generic_Orange_Bordered},
{"B", HighwayClass::Primary, RoadShieldType::Generic_Orange_Bordered},
{"L", HighwayClass::Secondary, RoadShieldType::Generic_White_Bordered},
{"K", HighwayClass::Secondary, RoadShieldType::Generic_White_Bordered}})
explicit GermanyRoadShieldParser(std::string const & baseRoadNumber)
: SimpleRoadShieldParser(baseRoadNumber, {{"A ", RoadShieldType::Highway_Hexagon_Blue, false, true},
{"D ", RoadShieldType::Hidden},
{"B ", RoadShieldType::Generic_Orange_Bordered},
{"L", RoadShieldType::Generic_White_Bordered},
{"K", RoadShieldType::Generic_White_Bordered}})
{}
};
@@ -882,7 +884,7 @@ RoadShieldsSetT GetRoadShields(std::string const & mwmName, std::string const &
if (mwmName == "India")
return IndiaRoadShieldParser(roadNumber).GetRoadShields();
if (mwmName == "Austria")
return AustriaRoadShieldParser(roadNumber, highwayClass).GetRoadShields();
return AustriaRoadShieldParser(roadNumber).GetRoadShields();
if (mwmName == "Belgium")
return BelgiumRoadShieldParser(roadNumber).GetRoadShields();
if (mwmName == "Greece")
@@ -918,7 +920,7 @@ RoadShieldsSetT GetRoadShields(std::string const & mwmName, std::string const &
if (mwmName == "France")
return FranceRoadShieldParser(roadNumber).GetRoadShields();
if (mwmName == "Germany")
return GermanyRoadShieldParser(roadNumber, highwayClass).GetRoadShields();
return GermanyRoadShieldParser(roadNumber).GetRoadShields();
if (mwmName == "Spain")
return SpainRoadShieldParser(roadNumber).GetRoadShields();
if (mwmName == "Ukraine")

View File

@@ -120,11 +120,13 @@ static std::pair<UniString, UniString> const kPreprocessReplacements[] = {
{MakeUniString("ι"), MakeUniString("ιερά μονή")},
{MakeUniString("ι.ν"), MakeUniString("ιερός ναός")},
{MakeUniString("κων/νου"), MakeUniString("κωνσταντίνου")},
{MakeUniString("б-р"), MakeUniString("бульвар")},
{MakeUniString("д-р"), MakeUniString("доктор")},
{MakeUniString("м-н"), MakeUniString("микрорайон")},
{MakeUniString("наб-я"), MakeUniString("набережная")},
{MakeUniString("пр-д"), MakeUniString("проезд")},
{MakeUniString("пр-т"), MakeUniString("проспект")},
{MakeUniString("р"), MakeUniString("район")},
{MakeUniString("আ/এ"), MakeUniString("আবাসিক এলাকা")},
};