Compare commits
1 Commits
yannikblos
...
release/20
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7641ea3c74 |
@@ -1 +1 @@
|
||||
version: 2025.03.02-7-FDroid+25030207
|
||||
version: 2025.12.19-11-FDroid+25121911
|
||||
|
||||
@@ -948,7 +948,7 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
||||
|
||||
mDisused.setVisibility(Editor.nativeCanMarkPlaceAsDisused() ? View.VISIBLE : View.GONE);
|
||||
|
||||
if (Editor.nativeAreSomeFeatureChangesUploaded())
|
||||
if (Editor.nativeIsMapObjectUploaded())
|
||||
{
|
||||
mReset.setText(R.string.editor_place_doesnt_exist);
|
||||
return;
|
||||
@@ -966,7 +966,7 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
||||
|
||||
private void reset()
|
||||
{
|
||||
if (Editor.nativeAreSomeFeatureChangesUploaded())
|
||||
if (Editor.nativeIsMapObjectUploaded())
|
||||
{
|
||||
placeDoesntExist();
|
||||
return;
|
||||
|
||||
@@ -15,13 +15,7 @@
|
||||
android:theme="@style/MwmWidget.ToolbarTheme">
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/save"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:layout_gravity="end|center_vertical"
|
||||
android:background="?selectableItemBackgroundBorderless"
|
||||
android:padding="@dimen/margin_half"
|
||||
android:textAppearance="@style/MwmTextAppearance.Toolbar.Title"
|
||||
style="@style/MwmWidget.Downloader.ToolbarButton"
|
||||
android:text="@string/editor_report_problem_send_button"/>
|
||||
</com.google.android.material.appbar.MaterialToolbar>
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?windowBackgroundForced"
|
||||
android:animateLayoutChanges="true"
|
||||
android:clickable="true"
|
||||
android:clipToPadding="false"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:background="?cardBackground"
|
||||
android:background="?windowBackgroundForced"
|
||||
android:padding="@dimen/margin_base">
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?cardBackground"
|
||||
android:minHeight="@dimen/height_item_oneline"
|
||||
android:paddingStart="@dimen/margin_base_plus"
|
||||
android:paddingEnd="@dimen/margin_base_plus">
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?cardBackground"
|
||||
android:minHeight="@dimen/height_item_oneline"
|
||||
android:paddingStart="@dimen/margin_base_plus"
|
||||
android:paddingEnd="@dimen/margin_base_plus">
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/margin_half_plus"
|
||||
android:textSize="@dimen/text_size_headline"
|
||||
android:fontFamily="@string/robotoMedium"
|
||||
android:textAppearance="@style/MwmTextAppearance.Title.Toolbar"
|
||||
android:gravity="center_horizontal"
|
||||
tools:text="Some long long long placeholder title"/>
|
||||
|
||||
8
android/app/src/main/res/layout/tab_timepicker.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
style="@style/MwmWidget.Tab"
|
||||
android:textAppearance="@style/MwmTextAppearance.Body3"
|
||||
tools:drawableStart="@drawable/ic_menu_open"
|
||||
tools:text="Some tab"/>
|
||||
@@ -15,6 +15,11 @@
|
||||
<item name="android:textStyle">bold</item>
|
||||
</style>
|
||||
|
||||
<style name="MwmTextAppearance.Title.Toolbar">
|
||||
<item name="android:textSize">@dimen/text_size_toolbar</item>
|
||||
<item name="android:fontFamily">@string/robotoMedium</item>
|
||||
</style>
|
||||
|
||||
<style name="MwmTextAppearance.Headline">
|
||||
<item name="android:textSize">@dimen/text_size_headline</item>
|
||||
<item name="android:textColor">?android:textColorPrimary</item>
|
||||
@@ -116,6 +121,10 @@
|
||||
<item name="android:textColor">@color/bg_cards</item>
|
||||
</style>
|
||||
|
||||
<style name="MwmTextAppearance.Toolbar.Title.Button">
|
||||
<item name="android:textSize">@dimen/text_size_body_3</item>
|
||||
</style>
|
||||
|
||||
<style name="MwmTextAppearance.NavMenu">
|
||||
<item name="android:textStyle">bold</item>
|
||||
</style>
|
||||
|
||||
@@ -287,6 +287,13 @@
|
||||
<item name="android:textColor">@color/text_light</item>
|
||||
</style>
|
||||
|
||||
<style name="MwmWidget.Tab">
|
||||
<item name="android:layout_width">wrap_content</item>
|
||||
<item name="android:layout_height">wrap_content</item>
|
||||
<item name="android:textAppearance">@style/MwmTextAppearance.Body3</item>
|
||||
<item name="android:gravity">center</item>
|
||||
</style>
|
||||
|
||||
<style name="MwmWidget.TabLayout" parent="Widget.Design.TabLayout">
|
||||
<item name="tabMaxWidth">0dp</item>
|
||||
<item name="tabTextAppearance">@style/MwmTextAppearance.Tab</item>
|
||||
@@ -298,6 +305,16 @@
|
||||
<item name="tabSelectedTextColor">@color/white_primary</item>
|
||||
</style>
|
||||
|
||||
<style name="MwmWidget.Downloader.ToolbarButton">
|
||||
<item name="android:layout_width">wrap_content</item>
|
||||
<item name="android:layout_height">match_parent</item>
|
||||
<item name="android:gravity">center</item>
|
||||
<item name="android:layout_gravity">end|center_vertical</item>
|
||||
<item name="android:background">?selectableItemBackgroundBorderless</item>
|
||||
<item name="android:padding">@dimen/margin_half</item>
|
||||
<item name="android:textAppearance">@style/MwmTextAppearance.Toolbar.Title.Button</item>
|
||||
</style>
|
||||
|
||||
<style name="MwmWidget.MaterialCalendar.Theme.FullScreen.Dark"
|
||||
parent="ThemeOverlay.Material3.MaterialCalendar.Fullscreen">
|
||||
<item name="colorSurface">@color/material_calendar_surface_dark</item>
|
||||
@@ -360,6 +377,9 @@
|
||||
<style name="MwmWidget.M3.Button" parent="Widget.Material3.Button">
|
||||
<item name="android:layout_width">wrap_content</item>
|
||||
<item name="android:layout_height">wrap_content</item>
|
||||
<item name="android:textColor">?accentButtonTextColor</item>
|
||||
<item name="backgroundTint">@null</item>
|
||||
<item name="cornerRadius">20dp</item>
|
||||
<item name="android:textSize">16sp</item>
|
||||
</style>
|
||||
|
||||
@@ -369,11 +389,13 @@
|
||||
|
||||
<style name="MwmWidget.M3.Button.Secondary" parent="@style/Widget.Material3.Button.OutlinedButton">
|
||||
<item name="android:textSize">16sp</item>
|
||||
<item name="strokeColor">?colorSecondary</item>
|
||||
<item name="android:textColor">?colorSecondary</item>
|
||||
</style>
|
||||
|
||||
<style name="MwmWidget.M3.FAB.Primary" parent="@style/Widget.Material3.FloatingActionButton.Primary">
|
||||
<item name="shapeAppearance">@style/ShapeAppearanceOverlay.Material3.FloatingActionButton</item>
|
||||
<item name="rippleColor">@null</item>
|
||||
<item name="backgroundTint">?colorSecondary</item>
|
||||
<item name="tint">?android:textColorPrimaryInverse</item>
|
||||
</style>
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../../../../../data/mapcss-mapping.csv
|
||||
|
@@ -580,10 +580,10 @@ JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeGetMapObject
|
||||
return static_cast<jint>(osm::Editor::Instance().GetFeatureStatus(g_editableMapObject.GetID()));
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeAreSomeFeatureChangesUploaded(JNIEnv * env, jclass clazz)
|
||||
JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeIsMapObjectUploaded(JNIEnv * env, jclass clazz)
|
||||
{
|
||||
return osm::Editor::Instance().AreSomeFeatureChangesUploaded(g_editableMapObject.GetID().m_mwmId,
|
||||
g_editableMapObject.GetID().m_index);
|
||||
return osm::Editor::Instance().IsFeatureUploaded(g_editableMapObject.GetID().m_mwmId,
|
||||
g_editableMapObject.GetID().m_index);
|
||||
}
|
||||
|
||||
// static nativeMakeLocalizedName(String langCode, String name);
|
||||
|
||||
@@ -190,5 +190,5 @@ public final class Editor
|
||||
|
||||
@FeatureStatus
|
||||
public static native int nativeGetMapObjectStatus();
|
||||
public static native boolean nativeAreSomeFeatureChangesUploaded();
|
||||
public static native boolean nativeIsMapObjectUploaded();
|
||||
}
|
||||
|
||||
@@ -42,11 +42,10 @@
|
||||
<string name="type.amenity.gambling">Glücksspiel</string>
|
||||
<string name="type.leisure.adult_gaming_centre">Spielhalle für Erwachsene</string>
|
||||
<string name="type.leisure.amusement_arcade">Spielhalle für Unterhaltungsspiele</string>
|
||||
<string name="type.amenity.charging_station.general">Ladestation</string>
|
||||
<string name="type.amenity.charging_station.bicycle">Fahrräder</string>
|
||||
<string name="type.amenity.charging_station.motorcycle">Motorräder</string>
|
||||
<string name="type.amenity.charging_station.motorcar">Autos</string>
|
||||
<string name="type.amenity.charging_station.small">Begrenzte Kapazität</string>
|
||||
<string name="type.amenity.charging_station">Ladestation</string>
|
||||
<string name="type.amenity.charging_station.bicycle">Fahrrad-Ladestation</string>
|
||||
<string name="type.amenity.charging_station.motorcar">Kfz-Ladestation</string>
|
||||
<string name="type.amenity.charging_station.motorcar.small">Kfz-Ladestation</string>
|
||||
<string name="type.amenity.childcare">Kindertagesstätte</string>
|
||||
<string name="type.amenity.cinema">Kino</string>
|
||||
<string name="type.leisure.bowling_alley">Bowlingbahn</string>
|
||||
|
||||
@@ -52,11 +52,10 @@
|
||||
<string name="type.amenity.gambling">Gambling</string>
|
||||
<string name="type.leisure.adult_gaming_centre">Adult Gaming Centre</string>
|
||||
<string name="type.leisure.amusement_arcade">Arcade</string>
|
||||
<string name="type.amenity.charging_station.general">Charging Station</string>
|
||||
<string name="type.amenity.charging_station.bicycle">Bicycles</string>
|
||||
<string name="type.amenity.charging_station.motorcycle">Motorcycles</string>
|
||||
<string name="type.amenity.charging_station.motorcar">Cars</string>
|
||||
<string name="type.amenity.charging_station.small">Limited Capacity</string>
|
||||
<string name="type.amenity.charging_station">Charging Station</string>
|
||||
<string name="type.amenity.charging_station.bicycle">Bicycle Charging Station</string>
|
||||
<string name="type.amenity.charging_station.motorcar">Car Charging Station</string>
|
||||
<string name="type.amenity.charging_station.motorcar.small">Car Charging Point</string>
|
||||
<string name="type.amenity.childcare">Nursery</string>
|
||||
<string name="type.amenity.cinema">Cinema</string>
|
||||
<string name="type.amenity.studio">Media Studio</string>
|
||||
|
||||
@@ -328,9 +328,7 @@
|
||||
"amenity-car_wash": "4Autowaschanlage|Autowäsche",
|
||||
"amenity-veterinary": "4Tierarzt",
|
||||
"@charging_station": "4Ladestation|aufladen",
|
||||
"amenity-charging_station-bicycle|@charging_station": "5Fahrradladestation|Fahrrad aufladen|E-Bike aufladen|Fahrrad laden|E-Bike laden",
|
||||
"amenity-charging_station-motorcycle|@charging_station": "6Motorradladestation|Motorrad aufladen|Motorrad laden",
|
||||
"amenity-charging_station-motorcar|@charging_station": "4Autoladestation|5Autoladegerät|Auto aufladen|Auto laden",
|
||||
"amenity-charging_station-bicycle|@charging_station": "Fahrrad aufladen",
|
||||
"amenity-childcare": "Kindertagesstätte|Kindergarten|Kinderbetreuung",
|
||||
"amenity-bicycle_parking": "6Fahrradständer",
|
||||
"amenity-waste_basket": "6Abfalleimer|4Mülleimer|Papierkorb",
|
||||
@@ -512,6 +510,7 @@
|
||||
"attraction-amusement_ride|attraction-carousel|attraction-roller_coaster|attraction-maze|attraction-historic|attraction-big_wheel|attraction-bumper_car|@category_children": "Attraktion|Labyrinth",
|
||||
"building-guardhouse": "4Wache",
|
||||
"shop-lighting|@shop": "Leuchtmittel|Lampen|Leuchte",
|
||||
"amenity-charging_station-motorcar|amenity-charging_station-motorcar-small|@charging_station": "4Autoladestation|5Autoladegerät|Ladestation",
|
||||
"amenity-mobile_money_agent": "6Mobile Money Vertretung|Mobile Money|Mobiles Geld",
|
||||
"man_made-telescope|man_made-telescope-optical|man_made-telescope-radio|man_made-telescope-gamma": "4Teleskop",
|
||||
"amenity-sailing_school": "5Segelschule|5Bootsschule|Bootsfahrschule",
|
||||
|
||||
@@ -350,11 +350,10 @@
|
||||
"man_made-observatory": "4Observatory",
|
||||
"amenity-veterinary": "4Veterinary Doctor|3Veterinary|vet|veterinarian",
|
||||
"amenity-animal_shelter": "6Animal Shelter",
|
||||
"@charging_station": "4Charging Station|charging|charger",
|
||||
"amenity-charging_station-general|@charging_station": "",
|
||||
"amenity-charging_station-bicycle|@charging_station": "4Bicycle Charging Station|Bicycle Charging|Bike Charging",
|
||||
"amenity-charging_station-motorcycle|@charging_station": "5Motorcycle Charging Station|Motorcycle Charging|Motorbike Charging",
|
||||
"amenity-charging_station-motorcar|@charging_station": "3Car Charging Station|Motorcar Charging|Car Charging",
|
||||
"@charging_station": "4Charging Station|charging",
|
||||
"amenity-charging_station|@charging_station": "",
|
||||
"amenity-charging_station-bicycle|@charging_station": "4Bicycle Charging|4Bike Charging",
|
||||
"amenity-charging_station-motorcar|amenity-charging_station-motorcar-small|@charging_station": "4Motorcar Charging|3Car Charging|Charger",
|
||||
"amenity-childcare": "Nursery|4Child Care|childcare",
|
||||
"amenity-bicycle_parking": "4Bicycle Parking|4Bike Parking",
|
||||
"amenity-waste_basket": "4Trash Bin|4litter bin|5waste basket|bin",
|
||||
|
||||
@@ -518,7 +518,7 @@
|
||||
"amenity-toilets|toilets-yes|@category_toilet": "wc",
|
||||
"leisure-sports_centre-sport-swimming": "4Centro de natación",
|
||||
"amenity-police|@category_police": "Estación de policía|policía",
|
||||
"amenity-charging_station-motorcar|@charging_station": "Cargador de autos|cargador de coches|cargador de carros",
|
||||
"amenity-charging_station-motorcar|amenity-charging_station-motorcar-small|@charging_station": "Cargador de autos|cargador de coches|cargador de carros",
|
||||
"amenity-sailing_school": "Escuela de vela|Escuela de navegación",
|
||||
"amenity-flight_school": "Escuela de aviación|Escuela de aeronáutica|Escuela de pilotos|aeronáutica|vuelo|aviación",
|
||||
"amenity-prep_school": "Propedéutico|Tutoría",
|
||||
|
||||
@@ -486,7 +486,7 @@
|
||||
"amenity-love_hotel": "Hôtel de passe|Hôtel de sexe|Hôtel pour adultes",
|
||||
"healthcare-sample_collection": "Prélèvement d'échantillons",
|
||||
"recycling-cardboard|@category_recycling": "5Recyclage de carton|Déchets de carton|Carton",
|
||||
"amenity-charging_station-motorcar|@charging_station": "Chargeur automobile|Chargeur de voiture|Chargeur",
|
||||
"amenity-charging_station-motorcar|amenity-charging_station-motorcar-small|@charging_station": "Chargeur automobile|Chargeur de voiture|Chargeur",
|
||||
"shop-lighting|@shop": "4Lumières|Luminaires|4Lampes",
|
||||
"office-security": "Bureau de sécurité",
|
||||
"building-guardhouse": "Garde|poste de sécurité|poste de gardiennage",
|
||||
|
||||
@@ -320,7 +320,7 @@
|
||||
"amenity-veterinary": "4Veterinārārsts|vetārsts|vetklīnika|veterinārā klīnika",
|
||||
"@charging_station": "4Uzlādes stacija|uzlāde",
|
||||
"amenity-charging_station-bicycle|@charging_station": "4Velosipēdu uzlāde|Riteņu uzlāde|Ričuku uzlāde|Divriteņu uzlāde",
|
||||
"amenity-charging_station-motorcar|@charging_station": "Automobiļu uzlāde|mašīnu uzlāde",
|
||||
"amenity-charging_station-motorcar|amenity-charging_station-motorcar-small|@charging_station": "Automobiļu uzlāde|mašīnu uzlāde",
|
||||
"amenity-childcare": "Bērnistaba",
|
||||
"amenity-bicycle_parking": "4Velonovietne",
|
||||
"amenity-waste_basket": "Atkritumu tvertne|4miskaste",
|
||||
|
||||
@@ -330,7 +330,7 @@
|
||||
"amenity-animal_shelter": "Приют для животных",
|
||||
"@charging_station": "4Зарядная станция|зарядка|электрозарядка|зарядить",
|
||||
"amenity-charging_station-bicycle|@charging_station": "4Велозарядка|Зарядка для велосипедов",
|
||||
"amenity-charging_station-motorcar|@charging_station": "4Автозарядка",
|
||||
"amenity-charging_station-motorcar|amenity-charging_station-motorcar-small|@charging_station": "4Автозарядка",
|
||||
"amenity-childcare": "Детская комната|3ясли",
|
||||
"amenity-bicycle_parking": "4Велопарковка|велостоянка",
|
||||
"amenity-waste_basket": "3Урна|4Мусорная корзина",
|
||||
|
||||
@@ -331,7 +331,7 @@
|
||||
"amenity-veterinary": "4Veteriner",
|
||||
"@charging_station": "Şarj İstasyonu|şarj etme",
|
||||
"amenity-charging_station-bicycle|@charging_station": "4Bisiklet Şarjı",
|
||||
"amenity-charging_station-motorcar|@charging_station": "4Otomobil Şarj Cihazı|4Araba Şarj Cihazı|4Araç Şarj Cihazı|3Trugo|4TOGG Şarj",
|
||||
"amenity-charging_station-motorcar|amenity-charging_station-motorcar-small|@charging_station": "4Otomobil Şarj Cihazı|4Araba Şarj Cihazı|4Araç Şarj Cihazı|3Trugo|4TOGG Şarj",
|
||||
"amenity-childcare": "Çocuk Yuvası|Kreş",
|
||||
"amenity-bicycle_parking": "4Bisiklet park etme|bisiklet park",
|
||||
"amenity-waste_basket": "Çöp Kutusu",
|
||||
|
||||
@@ -394,25 +394,32 @@
|
||||
<type id="amenity-pharmacy" group="shop">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
<type id="amenity-place_of_worship-buddhist">
|
||||
<!-- 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>
|
||||
<type id="amenity-place_of_worship-christian">
|
||||
<!-- 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>
|
||||
<type id="amenity-place_of_worship-hindu">
|
||||
<!-- 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>
|
||||
<type id="amenity-place_of_worship-jewish">
|
||||
<!-- 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>
|
||||
<type id="amenity-place_of_worship-muslim">
|
||||
<!-- 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>
|
||||
<type id="amenity-place_of_worship-shinto">
|
||||
<!-- 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>
|
||||
<type id="amenity-place_of_worship-taoist">
|
||||
<!-- 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">
|
||||
@@ -698,9 +705,6 @@
|
||||
<type id="leisure-resort">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
<type id="leisure-sports_centre-sport-swimming">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
<type id="leisure-sports_centre">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
@@ -1111,7 +1115,6 @@
|
||||
<type id="tourism-artwork">
|
||||
<include field="name" />
|
||||
</type>
|
||||
<!-- Not addable because OSM category is too broad and due to vandalism problems -->
|
||||
<type id="tourism-attraction" can_add="no">
|
||||
<include group="poi_internet" />
|
||||
<!-- <include field="wikipedia" />-->
|
||||
@@ -1141,22 +1144,26 @@
|
||||
<include group="poi_internet" />
|
||||
<include field="self_service" />
|
||||
</type>
|
||||
<type id="tourism-information-office">
|
||||
<!-- Can not be added because it is a complex type -->
|
||||
<type id="tourism-information-office" can_add="no">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
<type id="tourism-information-visitor_centre">
|
||||
<!-- Can not be added because it is a complex type -->
|
||||
<type id="tourism-information-visitor_centre" can_add="no">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
<type id="tourism-information-board">
|
||||
<!-- Can not be added because it is a complex type -->
|
||||
<type id="tourism-information-board" can_add="no">
|
||||
<include field="name" />
|
||||
</type>
|
||||
<type id="tourism-information-map">
|
||||
<!-- Can not be added because it is a complex type -->
|
||||
<type id="tourism-information-map" can_add="no">
|
||||
<include field="name" />
|
||||
</type>
|
||||
<type id="tourism-information-guidepost">
|
||||
<!-- Can not be added because it is a complex type -->
|
||||
<type id="tourism-information-guidepost" can_add="no">
|
||||
</type>
|
||||
<!-- Too generic to add -->
|
||||
<type id="tourism-information" can_add="no">
|
||||
<type id="tourism-information">
|
||||
<include group="poi" />
|
||||
</type>
|
||||
<type id="amenity-ranger_station">
|
||||
@@ -1502,50 +1509,67 @@
|
||||
<type id="leisure-escape_game">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
<type id="amenity-vending_machine-parking_tickets">
|
||||
<include field="operator" />
|
||||
<include field="level" />
|
||||
</type>
|
||||
<type id="amenity-vending_machine-public_transport_tickets">
|
||||
<include field="operator" />
|
||||
<include field="level" />
|
||||
</type>
|
||||
<!-- Uncomment this after our editor core supports complex types
|
||||
<type id="amenity-vending_machine-cigarettes">
|
||||
<tag k="amenity" v="vending_machine" />
|
||||
<tag k="vending" v="cigarettes" />
|
||||
<include field="operator" />
|
||||
<include field="level" />
|
||||
</type>
|
||||
<type id="amenity-vending_machine-drinks">
|
||||
<include field="operator" />
|
||||
<include field="level" />
|
||||
</type>
|
||||
<type id="amenity-vending_machine-excrement_bags">
|
||||
<include field="operator" />
|
||||
<include field="level" />
|
||||
</type>
|
||||
<type id="amenity-vending_machine-coffee">
|
||||
<tag k="amenity" v="vending_machine" />
|
||||
<tag k="vending" v="coffee" />
|
||||
<include field="operator" />
|
||||
<include field="level" />
|
||||
</type>
|
||||
<type id="amenity-vending_machine-condoms">
|
||||
<tag k="amenity" v="vending_machine" />
|
||||
<tag k="vending" v="condoms" />
|
||||
<include field="operator" />
|
||||
</type>
|
||||
<type id="amenity-vending_machine-drinks">
|
||||
<tag k="amenity" v="vending_machine" />
|
||||
<tag k="vending" v="drinks" />
|
||||
<include field="operator" />
|
||||
<include field="level" />
|
||||
</type>
|
||||
<type id="amenity-vending_machine-food">
|
||||
<tag k="amenity" v="vending_machine" />
|
||||
<tag k="vending" v="food" />
|
||||
<include field="operator" />
|
||||
<include field="level" />
|
||||
</type>
|
||||
<type id="amenity-vending_machine-newspapers">
|
||||
<tag k="amenity" v="vending_machine" />
|
||||
<tag k="vending" v="newspapers" />
|
||||
<include field="operator" />
|
||||
<include field="level" />
|
||||
</type>
|
||||
<type id="amenity-vending_machine-sweets">
|
||||
<tag k="amenity" v="vending_machine" />
|
||||
<tag k="vending" v="sweets" />
|
||||
<include field="operator" />
|
||||
<include field="level" />
|
||||
</type>
|
||||
<type id="amenity-vending_machine">
|
||||
<include field="operator" />
|
||||
<include field="level" />
|
||||
<type id="shop-car_repair-tyres">
|
||||
<tag k="shop" v="car_repair" />
|
||||
<tag k="service" v="tyres" />
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
<type id="leisure-sports_centre-climbing">
|
||||
<tag k="leisure" v="sports_centre" />
|
||||
<tag k="sport" v="climbing" />
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
<type id="leisure-sports_centre-shooting">
|
||||
<tag k="leisure" v="sports_centre" />
|
||||
<tag k="sport" v="shooting" />
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
<type id="leisure-sports_centre-swimming">
|
||||
<tag k="leisure" v="sports_centre" />
|
||||
<tag k="sport" v="swimming" />
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
<type id="leisure-sports_centre-yoga">
|
||||
<tag k="leisure" v="sports_centre" />
|
||||
<tag k="sport" v="yoga" />
|
||||
<include group="poi_internet" />
|
||||
</type-->
|
||||
<!-- Not addable as mapping as a node is uncommon -->
|
||||
<type id="natural-beach" can_add="no">
|
||||
<include field="name" />
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
# highway|bus_stop;[highway=bus_stop];;name;int_name;22;
|
||||
# It contains:
|
||||
# - type name: "highway|bus_stop" ("|" is converted to "-" internally)
|
||||
# - mapcss selectors for tags: "[highway=bus_stop]", multiple selectors are separated with commas, best practice tagging for OSM editor is listed first
|
||||
# - mapcss selectors for tags: "[highway=bus_stop]", multiple selectors are separated with commas
|
||||
# - "x" for a deprecated type or an empty cell otherwise
|
||||
# - primary title tag (usually "name")
|
||||
# - secondary title tag (usually "int_name")
|
||||
@@ -301,7 +301,7 @@ railway|crossing;197;
|
||||
boundary|national_park;198;
|
||||
deprecated:natural|wood|deciduous:01.2020;[natural=wood][wood=deciduous],[natural=wood][leaf_type=deciduous],[natural=wood][leaf_cycle=deciduous];x;name;int_name;199;landuse|forest|deciduous
|
||||
waterway|dam;200;
|
||||
amenity|charging_station|small;[amenity=charging_station][motorcar?][!capacity],[amenity=charging_station][motorcar?][capacity=1],[amenity=charging_station][motorcar?][capacity=2],[amenity=charging_station][!capacity],[amenity=charging_station][capacity=1],[amenity=charging_station][capacity=2],;;name;int_name;201;
|
||||
amenity|charging_station|motorcar|small;[amenity=charging_station][motorcar?][!capacity],[amenity=charging_station][motorcar?][capacity=1],[amenity=charging_station][motorcar?][capacity=2];;name;int_name;201;
|
||||
leisure|golf_course;202;
|
||||
highway|service|bridge;[highway=service][bridge?];;name;int_name;203;
|
||||
# ~250K usages.
|
||||
@@ -405,12 +405,12 @@ highway|secondary|tunnel;[highway=secondary][tunnel?];;name;int_name;297;
|
||||
# TODO: its a mismapping likely, if there is a bridge structure still, then it should be railway=disused.
|
||||
railway|abandoned|bridge;[railway=abandoned][bridge?];;name;int_name;298;
|
||||
man_made|lighthouse;299;
|
||||
amenity|charging_station|motorcycle;[amenity=charging_station][motorcycle?];;name;int_name;300;
|
||||
deprecated:highway|path|demanding_mountain_hiking:04.2024;[highway=path][sac_scale=demanding_mountain_hiking];x;name;int_name;300;highway|path|difficult
|
||||
man_made|storage_tank;301;
|
||||
man_made|silo;302;
|
||||
power|generator;303;
|
||||
highway|pedestrian|bridge;[highway=pedestrian][bridge?];;name;int_name;304;
|
||||
amenity|charging_station|motorcar;[amenity=charging_station][motorcar?][capacity?],[amenity=charging_station][motorcar?];;name;int_name;305;
|
||||
amenity|charging_station|motorcar;[amenity=charging_station][motorcar?][capacity?];;name;int_name;305;
|
||||
natural|saddle;306;
|
||||
mountain_pass;[mountain_pass];;name;int_name;307;
|
||||
highway|raceway;308;
|
||||
@@ -419,7 +419,7 @@ highway|primary_link|bridge;[highway=primary_link][bridge?];;name;int_name;310;
|
||||
man_made|tower|communication;[man_made=tower][tower:type=communication];;name;int_name;311;
|
||||
sport|equestrian;312;
|
||||
tourism|information|office;[tourism=information][information=office];;name;int_name;313;
|
||||
amenity|charging_station|carless;[amenity=charging_station][motorcar=not],[amenity=charging_station][motorcar=no];;name;int_name;314;
|
||||
deprecated:highway|footway|hiking:04.2024;[highway=footway][sac_scale=hiking];x;name;int_name;314;highway|path
|
||||
aeroway|gate;315;
|
||||
# TODO: railway=preserved is deprecated in OSM, recommended mapping is railway:preserved=yes + railway=*
|
||||
railway|preserved;316;
|
||||
@@ -626,7 +626,7 @@ highway|trunk_link|tunnel;[highway=trunk_link][tunnel?];;name;int_name;503;
|
||||
drinking_water|yes;[drinking_water=yes],[drinking_water=treated],[drinking_water:refill=yes];;;;504;
|
||||
drinking_water|no;505;
|
||||
amenity|sailing_school;[amenity=sailing_school],[education=sailing_school];;name;int_name;506;
|
||||
amenity|flight_school;[amenity=flight_school],[education=flight_school];;name;int_name;507;
|
||||
amenity|flight_school;[amenity=sailing_school],[education=flight_school];;name;int_name;507;
|
||||
amenity|prep_school;[amenity=prep_school],[education=prep_school];;name;int_name;508;
|
||||
amenity|car_pooling;509;
|
||||
social_facility|soup_kitchen;510;
|
||||
@@ -1192,7 +1192,7 @@ shop|tyres;1064;
|
||||
craft|beekeeper;1065;
|
||||
amenity|car_wash;1066;
|
||||
amenity|veterinary;1067;
|
||||
amenity|charging_station|general;[amenity=charging_station];;name;int_name;1068;
|
||||
amenity|charging_station;1068;
|
||||
amenity|childcare;1069;
|
||||
craft|blacksmith;1070;
|
||||
amenity|bicycle_parking;1071;
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 7 and column 16.
|
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
@@ -558,9 +558,8 @@ area|z15-[amenity=marketplace],
|
||||
area|z15-[office=diplomatic],
|
||||
area|z15-[amenity=vehicle_inspection],
|
||||
area|z15-[amenity=car_wash],
|
||||
area|z15-[amenity=fuel],
|
||||
area|z15-[amenity=charging_station][motorcar?],
|
||||
area|z16-[amenity=charging_station],
|
||||
area|z15-[amenity=fuel],
|
||||
area|z15-[amenity=motorcycle_parking],
|
||||
area|z15-[amenity=bicycle_parking],
|
||||
{fill-opacity: 1; fill-color: @general_area;}
|
||||
|
||||
@@ -2398,28 +2398,18 @@ node|z17-[amenity=fuel],
|
||||
node|z18-[amenity=fuel],
|
||||
{font-size: 11;}
|
||||
|
||||
node|z15-[amenity=charging_station][motorcar?],
|
||||
node|z16-[amenity=charging_station][motorcycle?],
|
||||
node|z16-[amenity=charging_station][bicycle?],
|
||||
node|z16-[amenity=charging_station][motorcar=not],
|
||||
node|z16-[amenity=charging_station],
|
||||
{icon-image: charging_station-small-m.svg;}
|
||||
|
||||
node|z14[amenity=charging_station][motorcar?][capacity?],
|
||||
{icon-image: charging_station-s.svg;}
|
||||
node|z15-[amenity=charging_station][motorcar?][capacity?],
|
||||
{icon-image: charging_station-m.svg;}
|
||||
|
||||
node|z14[amenity=charging_station][motorcar?][!capacity],
|
||||
node|z14[amenity=charging_station][motorcar?][capacity=1],
|
||||
node|z14[amenity=charging_station][motorcar?][capacity=2],
|
||||
{icon-image: none;}
|
||||
node|z15-[amenity=charging_station][motorcar?][!capacity],
|
||||
node|z15-[amenity=charging_station][motorcar?][capacity=1],
|
||||
node|z15-[amenity=charging_station][motorcar?][capacity=2],
|
||||
{icon-image: charging_station-small-m.svg;}
|
||||
node|z16-[amenity=charging_station],
|
||||
{icon-image: charging-point-m.svg;}
|
||||
|
||||
node|z14[amenity=charging_station][motorcar?],
|
||||
node|z14[amenity=charging_station][motorcar?][capacity?],
|
||||
{icon-image: charging-station-s.svg;}
|
||||
node|z15-[amenity=charging_station][motorcar?][capacity?],
|
||||
{icon-image: charging-station-m.svg;}
|
||||
|
||||
node|z14[amenity=charging_station][motorcar?][capacity?],
|
||||
{text-offset: 1;font-size: 10;icon-min-distance: 20;}
|
||||
node|z15[amenity=charging_station][motorcar?],
|
||||
{icon-min-distance: 20;}
|
||||
|
||||
@@ -85,12 +85,8 @@ landuse-cemetery-christian # area z10- (also has icon z
|
||||
=== 180
|
||||
|
||||
amenity-car_wash # area z15- (also has icon z17-, caption(optional) z17-)
|
||||
amenity-charging_station-bicycle # area z16- (also has icon z16-, caption(optional) z16-)
|
||||
amenity-charging_station-carless # area z16- (also has icon z16-, caption(optional) z16-)
|
||||
amenity-charging_station-general # area z16- (also has icon z16-, caption(optional) z16-)
|
||||
amenity-charging_station-motorcar # area z15- (also has icon z14-, caption(optional) z14-)
|
||||
amenity-charging_station-motorcycle # area z16- (also has icon z16-, caption(optional) z16-)
|
||||
amenity-charging_station-small # area z15- (also has icon z15-, caption(optional) z16-)
|
||||
amenity-charging_station-motorcar-small # area z15- (also has icon z16-, caption(optional) z16-)
|
||||
amenity-courthouse # area z15- (also has icon z17-, caption(optional) z17-)
|
||||
amenity-fire_station # area z15- (also has icon z16-, caption(optional) z17-)
|
||||
amenity-fuel # area z15- (also has icon z14-, caption(optional) z14-)
|
||||
|
||||
@@ -374,13 +374,13 @@ tourism-attraction # icon z14- (also has captio
|
||||
tourism-gallery # icon z15- (also has caption(optional) z15-)
|
||||
=== 4300
|
||||
|
||||
amenity-charging_station-small # icon z15- (also has caption(optional) z16-, area z15-)
|
||||
=== 4280
|
||||
|
||||
amenity-charging_station-motorcar # icon z14- (also has caption(optional) z14-, area z15-)
|
||||
amenity-fuel # icon z14- (also has caption(optional) z14-, area z15-)
|
||||
=== 4270
|
||||
|
||||
amenity-charging_station-motorcar-small # icon z16- (also has caption(optional) z16-, area z15-)
|
||||
=== 4260
|
||||
|
||||
highway-services # icon z14- (also has caption(optional) z14-, area z13-)
|
||||
=== 4250
|
||||
|
||||
@@ -424,23 +424,13 @@ highway-rest_area # icon z15- (also has captio
|
||||
tourism-camp_site # icon z16- (also has caption(optional) z16-, area z13-)
|
||||
tourism-caravan_site # icon z16- (also has caption(optional) z16-)
|
||||
tourism-chalet # icon z16- (also has caption(optional) z16-)
|
||||
=== 3850
|
||||
|
||||
shop-car_repair-tyres # icon z15- (also has caption(optional) z15-)
|
||||
=== 3800
|
||||
|
||||
amenity-charging_station-motorcycle # icon z16- (also has caption(optional) z16-, area z16-)
|
||||
=== 3752
|
||||
|
||||
amenity-charging_station-bicycle # icon z16- (also has caption(optional) z16-, area z16-)
|
||||
=== 3751
|
||||
|
||||
amenity-charging_station-general # icon z16- (also has caption(optional) z16-, area z16-)
|
||||
amenity-charging_station # icon z16- (also has caption(optional) z16-)
|
||||
amenity-charging_station-bicycle # icon z16- (also has caption(optional) z16-)
|
||||
shop-car_repair-tyres # icon z15- (also has caption(optional) z15-)
|
||||
=== 3750
|
||||
|
||||
amenity-charging_station-carless # icon z16- (also has caption(optional) z16-, area z16-)
|
||||
=== 3749
|
||||
|
||||
railway-subway_entrance # icon z16- (also has caption(optional) z17-)
|
||||
railway-subway_entrance-adana # icon z16- (also has caption(optional) z17-)
|
||||
railway-subway_entrance-algiers # icon z16- (also has caption(optional) z17-)
|
||||
@@ -1650,13 +1640,13 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# tourism-gallery # caption(optional) z15- (also has icon z15-)
|
||||
# === -5700
|
||||
|
||||
# amenity-charging_station-small # caption(optional) z16- (also has icon z15-, area z15-)
|
||||
# === -5720
|
||||
|
||||
# amenity-charging_station-motorcar # caption(optional) z14- (also has icon z14-, area z15-)
|
||||
# amenity-fuel # caption(optional) z14- (also has icon z14-, area z15-)
|
||||
# === -5730
|
||||
|
||||
# amenity-charging_station-motorcar-small # caption(optional) z16- (also has icon z16-, area z15-)
|
||||
# === -5740
|
||||
|
||||
# highway-services # caption(optional) z14- (also has icon z14-, area z13-)
|
||||
# === -5750
|
||||
|
||||
@@ -1700,23 +1690,13 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# tourism-camp_site # caption(optional) z16- (also has icon z16-, area z13-)
|
||||
# tourism-caravan_site # caption(optional) z16- (also has icon z16-)
|
||||
# tourism-chalet # caption(optional) z16- (also has icon z16-)
|
||||
# === -6150
|
||||
|
||||
# shop-car_repair-tyres # caption(optional) z15- (also has icon z15-)
|
||||
# === -6200
|
||||
|
||||
# amenity-charging_station-motorcycle # caption(optional) z16- (also has icon z16-, area z16-)
|
||||
# === -6248
|
||||
|
||||
# amenity-charging_station-bicycle # caption(optional) z16- (also has icon z16-, area z16-)
|
||||
# === -6249
|
||||
|
||||
# amenity-charging_station-general # caption(optional) z16- (also has icon z16-, area z16-)
|
||||
# amenity-charging_station # caption(optional) z16- (also has icon z16-)
|
||||
# amenity-charging_station-bicycle # caption(optional) z16- (also has icon z16-)
|
||||
# shop-car_repair-tyres # caption(optional) z15- (also has icon z15-)
|
||||
# === -6250
|
||||
|
||||
# amenity-charging_station-carless # caption(optional) z16- (also has icon z16-, area z16-)
|
||||
# === -6251
|
||||
|
||||
# railway-subway_entrance # caption(optional) z17- (also has icon z16-)
|
||||
# railway-subway_entrance-adana # caption(optional) z17- (also has icon z16-)
|
||||
# railway-subway_entrance-algiers # caption(optional) z17- (also has icon z16-)
|
||||
|
||||
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
@@ -78,7 +78,6 @@ leisure-sports_centre-sport-volleyball # area z13- (also has icon z
|
||||
leisure-sports_centre-sport-yoga # area z13- (also has icon z16-, caption(optional) z16-)
|
||||
=== 190
|
||||
|
||||
amenity-courthouse # area z15- (also has icon z17-, caption(optional) z17-)
|
||||
amenity-grave_yard # area z10- (also has icon z17-, caption(optional) z17-)
|
||||
amenity-grave_yard-christian # area z10- (also has icon z17-, caption(optional) z17-)
|
||||
landuse-cemetery # area z10- (also has icon z14-, caption(optional) z15-)
|
||||
@@ -86,12 +85,9 @@ landuse-cemetery-christian # area z10- (also has icon z
|
||||
=== 180
|
||||
|
||||
amenity-car_wash # area z15- (also has icon z17-, caption(optional) z17-)
|
||||
amenity-charging_station-bicycle # area z16- (also has icon z16-, caption(optional) z16-)
|
||||
amenity-charging_station-carless # area z16- (also has icon z16-, caption(optional) z16-)
|
||||
amenity-charging_station-general # area z16- (also has icon z16-, caption(optional) z16-)
|
||||
amenity-charging_station-motorcar # area z15- (also has icon z14-, caption(optional) z14-)
|
||||
amenity-charging_station-motorcycle # area z16- (also has icon z16-, caption(optional) z16-)
|
||||
amenity-charging_station-small # area z15- (also has icon z15-, caption(optional) z16-)
|
||||
amenity-charging_station-motorcar-small # area z15- (also has icon z16-, caption(optional) z16-)
|
||||
amenity-courthouse # area z15- (also has icon z17-, caption(optional) z17-)
|
||||
amenity-fire_station # area z15- (also has icon z16-, caption(optional) z17-)
|
||||
amenity-fuel # area z15- (also has icon z14-, caption(optional) z14-)
|
||||
amenity-marketplace # area z15- (also has icon z16-, caption(optional) z16-)
|
||||
|
||||
@@ -374,13 +374,13 @@ tourism-attraction # icon z14- (also has captio
|
||||
tourism-gallery # icon z15- (also has caption(optional) z15-)
|
||||
=== 4300
|
||||
|
||||
amenity-charging_station-small # icon z15- (also has caption(optional) z16-, area z15-)
|
||||
=== 4280
|
||||
|
||||
amenity-charging_station-motorcar # icon z14- (also has caption(optional) z14-, area z15-)
|
||||
amenity-fuel # icon z14- (also has caption(optional) z14-, area z15-)
|
||||
=== 4270
|
||||
|
||||
amenity-charging_station-motorcar-small # icon z16- (also has caption(optional) z16-, area z15-)
|
||||
=== 4260
|
||||
|
||||
highway-services # icon z14- (also has caption(optional) z14-, area z13-)
|
||||
=== 4250
|
||||
|
||||
@@ -424,23 +424,13 @@ highway-rest_area # icon z14- (also has captio
|
||||
tourism-camp_site # icon z13- (also has caption(optional) z13-, area z13-)
|
||||
tourism-caravan_site # icon z13- (also has caption(optional) z13-)
|
||||
tourism-chalet # icon z14- (also has caption(optional) z14-)
|
||||
=== 3850
|
||||
|
||||
shop-car_repair-tyres # icon z15- (also has caption(optional) z15-)
|
||||
=== 3800
|
||||
|
||||
amenity-charging_station-motorcycle # icon z16- (also has caption(optional) z16-, area z16-)
|
||||
=== 3752
|
||||
|
||||
amenity-charging_station-bicycle # icon z16- (also has caption(optional) z16-, area z16-)
|
||||
=== 3751
|
||||
|
||||
amenity-charging_station-general # icon z16- (also has caption(optional) z16-, area z16-)
|
||||
amenity-charging_station # icon z16- (also has caption(optional) z16-)
|
||||
amenity-charging_station-bicycle # icon z16- (also has caption(optional) z16-)
|
||||
shop-car_repair-tyres # icon z15- (also has caption(optional) z15-)
|
||||
=== 3750
|
||||
|
||||
amenity-charging_station-carless # icon z16- (also has caption(optional) z16-, area z16-)
|
||||
=== 3749
|
||||
|
||||
railway-subway_entrance # icon z16- (also has caption(optional) z17-)
|
||||
railway-subway_entrance-adana # icon z16- (also has caption(optional) z17-)
|
||||
railway-subway_entrance-algiers # icon z16- (also has caption(optional) z17-)
|
||||
@@ -1653,13 +1643,13 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# tourism-gallery # caption(optional) z15- (also has icon z15-)
|
||||
# === -5700
|
||||
|
||||
# amenity-charging_station-small # caption(optional) z16- (also has icon z15-, area z15-)
|
||||
# === -5720
|
||||
|
||||
# amenity-charging_station-motorcar # caption(optional) z14- (also has icon z14-, area z15-)
|
||||
# amenity-fuel # caption(optional) z14- (also has icon z14-, area z15-)
|
||||
# === -5730
|
||||
|
||||
# amenity-charging_station-motorcar-small # caption(optional) z16- (also has icon z16-, area z15-)
|
||||
# === -5740
|
||||
|
||||
# highway-services # caption(optional) z14- (also has icon z14-, area z13-)
|
||||
# === -5750
|
||||
|
||||
@@ -1703,23 +1693,13 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# tourism-camp_site # caption(optional) z13- (also has icon z13-, area z13-)
|
||||
# tourism-caravan_site # caption(optional) z13- (also has icon z13-)
|
||||
# tourism-chalet # caption(optional) z14- (also has icon z14-)
|
||||
# === -6150
|
||||
|
||||
# shop-car_repair-tyres # caption(optional) z15- (also has icon z15-)
|
||||
# === -6200
|
||||
|
||||
# amenity-charging_station-motorcycle # caption(optional) z16- (also has icon z16-, area z16-)
|
||||
# === -6248
|
||||
|
||||
# amenity-charging_station-bicycle # caption(optional) z16- (also has icon z16-, area z16-)
|
||||
# === -6249
|
||||
|
||||
# amenity-charging_station-general # caption(optional) z16- (also has icon z16-, area z16-)
|
||||
# amenity-charging_station # caption(optional) z16- (also has icon z16-)
|
||||
# amenity-charging_station-bicycle # caption(optional) z16- (also has icon z16-)
|
||||
# shop-car_repair-tyres # caption(optional) z15- (also has icon z15-)
|
||||
# === -6250
|
||||
|
||||
# amenity-charging_station-carless # caption(optional) z16- (also has icon z16-, area z16-)
|
||||
# === -6251
|
||||
|
||||
# railway-subway_entrance # caption(optional) z17- (also has icon z16-)
|
||||
# railway-subway_entrance-adana # caption(optional) z17- (also has icon z16-)
|
||||
# railway-subway_entrance-algiers # caption(optional) z17- (also has icon z16-)
|
||||
|
||||
@@ -349,9 +349,8 @@ area|z13-[highway=services],
|
||||
area|z13-[highway=rest_area],
|
||||
area|z13-[landuse=garages],
|
||||
|
||||
area|z15-[amenity=fuel],
|
||||
area|z15-[amenity=charging_station][motorcar?],
|
||||
area|z16-[amenity=charging_station],
|
||||
area|z15-[amenity=fuel],
|
||||
area|z17-[amenity=vehicle_inspection],
|
||||
area|z17-[amenity=car_wash],
|
||||
area|z17-[amenity=motorcycle_parking],
|
||||
|
||||
@@ -626,28 +626,16 @@ node|z17[amenity=fuel],
|
||||
node|z18-[amenity=fuel],
|
||||
{icon-image: fuel-m.svg;font-size: 14.5;}
|
||||
|
||||
node|z15-[amenity=charging_station][motorcar?],
|
||||
node|z16-[amenity=charging_station][motorcycle?],
|
||||
node|z16-[amenity=charging_station][bicycle?],
|
||||
node|z16-[amenity=charging_station][motorcar=not],
|
||||
node|z14-[amenity=charging_station][motorcar?][!capacity],
|
||||
node|z14-[amenity=charging_station][motorcar?][capacity=1],
|
||||
node|z14-[amenity=charging_station][motorcar?][capacity=2],
|
||||
node|z16-[amenity=charging_station],
|
||||
{icon-image: charging_station-small-m.svg;}
|
||||
{icon-image: charging-point-m.svg;}
|
||||
|
||||
node|z14-[amenity=charging_station][motorcar?][capacity?],
|
||||
{icon-image: charging-station-m.svg;}
|
||||
|
||||
node|z14[amenity=charging_station][motorcar?][capacity?],
|
||||
{icon-image: charging_station-s.svg;}
|
||||
node|z15-[amenity=charging_station][motorcar?][capacity?],
|
||||
{icon-image: charging_station-m.svg;}
|
||||
|
||||
node|z14[amenity=charging_station][motorcar?][!capacity],
|
||||
node|z14[amenity=charging_station][motorcar?][capacity=1],
|
||||
node|z14[amenity=charging_station][motorcar?][capacity=2],
|
||||
{icon-image: none;}
|
||||
node|z15-[amenity=charging_station][motorcar?][!capacity],
|
||||
node|z15-[amenity=charging_station][motorcar?][capacity=1],
|
||||
node|z15-[amenity=charging_station][motorcar?][capacity=2],
|
||||
{icon-image: charging_station-small-m.svg;}
|
||||
|
||||
node|z14[amenity=charging_station][motorcar?],
|
||||
{text-offset: 1;font-size: 12.25;icon-min-distance: 20;}
|
||||
node|z15[amenity=charging_station][motorcar?],
|
||||
{icon-min-distance: 20;font-size: 12.5;}
|
||||
|
||||
@@ -33,12 +33,8 @@ amenity-parking-street_side-private # area z15- (also has icon z
|
||||
=== 160
|
||||
|
||||
amenity-car_wash # area z17- (also has icon z17-, caption(optional) z17-)
|
||||
amenity-charging_station-bicycle # area z16- (also has icon z16-, caption(optional) z16-)
|
||||
amenity-charging_station-carless # area z16- (also has icon z16-, caption(optional) z16-)
|
||||
amenity-charging_station-general # area z16- (also has icon z16-, caption(optional) z16-)
|
||||
amenity-charging_station-motorcar # area z15- (also has icon z14-, caption(optional) z14-)
|
||||
amenity-charging_station-motorcycle # area z16- (also has icon z16-, caption(optional) z16-)
|
||||
amenity-charging_station-small # area z15- (also has icon z15-, caption(optional) z16-)
|
||||
amenity-charging_station-motorcar-small # area z15- (also has icon z16-, caption(optional) z16-)
|
||||
amenity-fuel # area z15- (also has icon z12-, caption(optional) z12-)
|
||||
amenity-vehicle_inspection # area z17- (also has icon z17-)
|
||||
highway-rest_area # area z13- (also has icon z14-, caption(optional) z14-)
|
||||
|
||||
@@ -170,28 +170,17 @@ aeroway-aerodrome-international # icon z7- (also has caption
|
||||
place-town # caption z8-
|
||||
=== 3250
|
||||
|
||||
amenity-charging_station-small # icon z15- (also has caption(optional) z16-, area z15-)
|
||||
=== 3210
|
||||
|
||||
amenity-charging_station-motorcar # icon z14- (also has caption(optional) z14-, area z15-)
|
||||
amenity-fuel # icon z12- (also has caption(optional) z12-, area z15-)
|
||||
=== 3200
|
||||
|
||||
amenity-charging_station-motorcar-small # icon z16- (also has caption(optional) z16-, area z15-)
|
||||
=== 3190
|
||||
|
||||
amenity-charging_station # icon z16- (also has caption(optional) z16-)
|
||||
amenity-vending_machine-fuel # icon z17- (also has caption(optional) z17-)
|
||||
=== 3153
|
||||
|
||||
amenity-charging_station-motorcycle # icon z16- (also has caption(optional) z16-, area z16-)
|
||||
=== 3152
|
||||
|
||||
amenity-charging_station-bicycle # icon z16- (also has caption(optional) z16-, area z16-)
|
||||
=== 3151
|
||||
|
||||
amenity-charging_station-general # icon z16- (also has caption(optional) z16-, area z16-)
|
||||
=== 3150
|
||||
|
||||
amenity-charging_station-carless # icon z16- (also has caption(optional) z16-, area z16-)
|
||||
=== 3149
|
||||
|
||||
railway-station-subway-moscow # icon z11-15 (also has caption(optional) z15)
|
||||
railway-station-subway-spb # icon z11-16 (also has caption(optional) z15-16)
|
||||
=== 3100
|
||||
@@ -539,6 +528,9 @@ natural-beach-gravel # caption z15- (also has are
|
||||
natural-beach-sand # caption z15- (also has area z10-)
|
||||
=== 900
|
||||
|
||||
amenity-charging_station-bicycle # icon z16- (also has caption(optional) z16-)
|
||||
=== 850
|
||||
|
||||
historic-boundary_stone # icon z16- (also has caption(optional) z16-)
|
||||
historic-gallows # icon z16- (also has caption(optional) z16-)
|
||||
historic-pillory # icon z16- (also has caption(optional) z16-)
|
||||
@@ -792,28 +784,17 @@ entrance-emergency # icon z19- (also has captio
|
||||
# aeroway-aerodrome-international # caption(optional) z10- (also has icon z7-, area z10-)
|
||||
# === -6700
|
||||
|
||||
# amenity-charging_station-small # caption(optional) z16- (also has icon z15-, area z15-)
|
||||
# === -6790
|
||||
|
||||
# amenity-charging_station-motorcar # caption(optional) z14- (also has icon z14-, area z15-)
|
||||
# amenity-fuel # caption(optional) z12- (also has icon z12-, area z15-)
|
||||
# === -6800
|
||||
|
||||
# amenity-charging_station-motorcar-small # caption(optional) z16- (also has icon z16-, area z15-)
|
||||
# === -6810
|
||||
|
||||
# amenity-charging_station # caption(optional) z16- (also has icon z16-)
|
||||
# amenity-vending_machine-fuel # caption(optional) z17- (also has icon z17-)
|
||||
# === -6847
|
||||
|
||||
# amenity-charging_station-motorcycle # caption(optional) z16- (also has icon z16-, area z16-)
|
||||
# === -6848
|
||||
|
||||
# amenity-charging_station-bicycle # caption(optional) z16- (also has icon z16-, area z16-)
|
||||
# === -6849
|
||||
|
||||
# amenity-charging_station-general # caption(optional) z16- (also has icon z16-, area z16-)
|
||||
# === -6850
|
||||
|
||||
# amenity-charging_station-carless # caption(optional) z16- (also has icon z16-, area z16-)
|
||||
# === -6851
|
||||
|
||||
# railway-station-subway-moscow # caption(optional) z15 (also has icon z11-15)
|
||||
# railway-station-subway-spb # caption(optional) z15-16 (also has icon z11-16)
|
||||
# === -6900
|
||||
@@ -1075,6 +1056,9 @@ entrance-emergency # icon z19- (also has captio
|
||||
# amenity-hospital # caption(optional) z15- (also has icon z15-)
|
||||
# === -9000
|
||||
|
||||
# amenity-charging_station-bicycle # caption(optional) z16- (also has icon z16-)
|
||||
# === -9150
|
||||
|
||||
# historic-boundary_stone # caption(optional) z16- (also has icon z16-)
|
||||
# historic-gallows # caption(optional) z16- (also has icon z16-)
|
||||
# historic-pillory # caption(optional) z16- (also has icon z16-)
|
||||
|
||||
@@ -42,11 +42,10 @@
|
||||
"type.amenity.gambling" = "Glücksspiel";
|
||||
"type.leisure.adult_gaming_centre" = "Spielhalle für Erwachsene";
|
||||
"type.leisure.amusement_arcade" = "Spielhalle für Unterhaltungsspiele";
|
||||
"type.amenity.charging_station.general" = "Ladestation";
|
||||
"type.amenity.charging_station.motorcar" = "Autos";
|
||||
"type.amenity.charging_station.motorcycle" = "Motorräder";
|
||||
"type.amenity.charging_station.bicycle" = "Fahrräder";
|
||||
"type.amenity.charging_station.small" = "Begrenzte Kapazität";
|
||||
"type.amenity.charging_station" = "Ladestation";
|
||||
"type.amenity.charging_station.bicycle" = "Fahrrad-Ladestation";
|
||||
"type.amenity.charging_station.motorcar" = "Kfz-Ladestation";
|
||||
"type.amenity.charging_station.motorcar.small" = "Kfz-Ladestation";
|
||||
"type.amenity.childcare" = "Kindertagesstätte";
|
||||
"type.amenity.cinema" = "Kino";
|
||||
"type.leisure.bowling_alley" = "Bowlingbahn";
|
||||
|
||||
@@ -47,11 +47,10 @@
|
||||
"type.amenity.gambling" = "Gambling";
|
||||
"type.leisure.adult_gaming_centre" = "Adult Gaming Centre";
|
||||
"type.leisure.amusement_arcade" = "Arcade";
|
||||
"type.amenity.charging_station.general" = "Charging Station";
|
||||
"type.amenity.charging_station.motorcar" = "Cars";
|
||||
"type.amenity.charging_station.motorcycle" = "Motorcycles";
|
||||
"type.amenity.charging_station.bicycle" = "Bicycles";
|
||||
"type.amenity.charging_station.small" = "Limited Capacity";
|
||||
"type.amenity.charging_station" = "Charging Station";
|
||||
"type.amenity.charging_station.bicycle" = "Bicycle Charging Station";
|
||||
"type.amenity.charging_station.motorcar" = "Car Charging Station";
|
||||
"type.amenity.charging_station.motorcar.small" = "Car Charging Point";
|
||||
"type.amenity.childcare" = "Nursery";
|
||||
"type.amenity.cinema" = "Cinema";
|
||||
"type.leisure.bowling_alley" = "Bowling Alley";
|
||||
|
||||
@@ -54,11 +54,10 @@
|
||||
"type.amenity.studio" = "Media Studio";
|
||||
"type.leisure.adult_gaming_centre" = "Adult Gaming Centre";
|
||||
"type.leisure.amusement_arcade" = "Arcade";
|
||||
"type.amenity.charging_station.general" = "Charging Station";
|
||||
"type.amenity.charging_station.motorcar" = "Cars";
|
||||
"type.amenity.charging_station.motorcycle" = "Motorcycles";
|
||||
"type.amenity.charging_station.bicycle" = "Bicycles";
|
||||
"type.amenity.charging_station.small" = "Limited Capacity";
|
||||
"type.amenity.charging_station" = "Charging Station";
|
||||
"type.amenity.charging_station.bicycle" = "Bicycle Charging Station";
|
||||
"type.amenity.charging_station.motorcar" = "Car Charging Station";
|
||||
"type.amenity.charging_station.motorcar.small" = "Car Charging Point";
|
||||
"type.amenity.childcare" = "Nursery";
|
||||
"type.amenity.cinema" = "Cinema";
|
||||
"type.leisure.bowling_alley" = "Bowling Alley";
|
||||
|
||||
@@ -40,7 +40,6 @@
|
||||
27AF18562E1DB63000CD41E2 /* PowerSavingMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27AF18552E1DB62F00CD41E2 /* PowerSavingMode.swift */; };
|
||||
27AF18582E1DB63A00CD41E2 /* Appearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27AF18572E1DB63900CD41E2 /* Appearance.swift */; };
|
||||
27AF185A2E1DB64500CD41E2 /* AnnouncingSpeedTrapsWhileVoiceRouting.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27AF18592E1DB64400CD41E2 /* AnnouncingSpeedTrapsWhileVoiceRouting.swift */; };
|
||||
27FDBF212EEEFC830045621D /* mapcss-mapping.csv in Resources */ = {isa = PBXBuildFile; fileRef = 27FDBF202EEEFC830045621D /* mapcss-mapping.csv */; };
|
||||
3304306D21D4EAFB00317CA3 /* SearchCategoryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3304306C21D4EAFB00317CA3 /* SearchCategoryCell.swift */; };
|
||||
33046832219C57180041F3A8 /* CategorySettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33046831219C57180041F3A8 /* CategorySettingsViewController.swift */; };
|
||||
337F98A621D37B7400C8AC27 /* SearchTabViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 337F98A521D37B7400C8AC27 /* SearchTabViewController.swift */; };
|
||||
@@ -790,7 +789,6 @@
|
||||
27AF18552E1DB62F00CD41E2 /* PowerSavingMode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PowerSavingMode.swift; sourceTree = "<group>"; };
|
||||
27AF18572E1DB63900CD41E2 /* Appearance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Appearance.swift; sourceTree = "<group>"; };
|
||||
27AF18592E1DB64400CD41E2 /* AnnouncingSpeedTrapsWhileVoiceRouting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnouncingSpeedTrapsWhileVoiceRouting.swift; sourceTree = "<group>"; };
|
||||
27FDBF202EEEFC830045621D /* mapcss-mapping.csv */ = {isa = PBXFileReference; lastKnownFileType = text; name = "mapcss-mapping.csv"; path = "/Users/yannikbloscheck/Apps/CoMaps/Code/data/mapcss-mapping.csv"; sourceTree = "<absolute>"; };
|
||||
28A0AB4B0D9B1048005BE974 /* Maps_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Maps_Prefix.pch; sourceTree = "<group>"; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
|
||||
29B97316FDCFA39411CA2CEA /* main.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; indentWidth = 2; path = main.mm; sourceTree = "<group>"; tabWidth = 2; };
|
||||
30034C5C2B3F0B74005D961A /* az */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = az; path = az.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
@@ -3950,7 +3948,6 @@
|
||||
6B9978341C89A316003B8AA0 /* editor.config */,
|
||||
978D4A30199A11E600D72CA7 /* faq.html */,
|
||||
BB7626B41E8559980031D71C /* icudt75l.dat */,
|
||||
27FDBF202EEEFC830045621D /* mapcss-mapping.csv */,
|
||||
F623DA6A1C9C2731006A3436 /* opening_hours_how_to_edit.html */,
|
||||
FA85F632145DDDC20090E1A0 /* packed_polygons.bin */,
|
||||
451950391B7A3E070085DA05 /* patterns.txt */,
|
||||
@@ -4204,7 +4201,6 @@
|
||||
34F73F9F1E082FF800AC1FD6 /* Localizable.strings in Resources */,
|
||||
340E1EF21E2F614400CE49BF /* Main.storyboard in Resources */,
|
||||
F6E2FE521E097BA00083EBEC /* MWMActionBarButton.xib in Resources */,
|
||||
27FDBF212EEEFC830045621D /* mapcss-mapping.csv in Resources */,
|
||||
EDBD68072B625724005DD151 /* LocationServicesDisabledAlert.xib in Resources */,
|
||||
993DF0CA23F6BD0600AC231A /* ElevationDetailsViewController.xib in Resources */,
|
||||
F623DA6F1C9C2E62006A3436 /* MWMAddPlaceNavigationBar.xib in Resources */,
|
||||
|
||||
@@ -158,7 +158,7 @@ void registerCellsForTableView(std::vector<MWMEditorCellID> const & cells, UITab
|
||||
[self configNavBar];
|
||||
auto const & fid = m_mapObject.GetID();
|
||||
self.featureStatus = osm::Editor::Instance().GetFeatureStatus(fid.m_mwmId, fid.m_index);
|
||||
self.isFeatureUploaded = osm::Editor::Instance().AreSomeFeatureChangesUploaded(fid.m_mwmId, fid.m_index);
|
||||
self.isFeatureUploaded = osm::Editor::Instance().IsFeatureUploaded(fid.m_mwmId, fid.m_index);
|
||||
m_newAdditionalLanguages.clear();
|
||||
if (self.isCreating)
|
||||
{
|
||||
@@ -1089,7 +1089,7 @@ void registerCellsForTableView(std::vector<MWMEditorCellID> const & cells, UITab
|
||||
- (void)tapOnButtonCell:(UITableViewCell *)cell
|
||||
{
|
||||
auto const & fid = m_mapObject.GetID();
|
||||
self.isFeatureUploaded = osm::Editor::Instance().AreSomeFeatureChangesUploaded(fid.m_mwmId, fid.m_index);
|
||||
self.isFeatureUploaded = osm::Editor::Instance().IsFeatureUploaded(fid.m_mwmId, fid.m_index);
|
||||
NSIndexPath * ip = [self.tableView indexPathForCell:cell];
|
||||
[self.tableView reloadRowsAtIndexPaths:@[ ip ] withRowAnimation:UITableViewRowAnimationFade];
|
||||
|
||||
|
||||
@@ -260,14 +260,6 @@ WeekDayView getWeekDayView()
|
||||
});
|
||||
}
|
||||
|
||||
- (IBAction)extendedToggleButtonTap
|
||||
{
|
||||
id<MWMPlacePageOpeningHoursCellProtocol> delegate = self.delegate;
|
||||
if (delegate.isEditor) {
|
||||
[delegate setOpeningHoursCellExpanded:!delegate.openingHoursCellExpanded];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - Properties
|
||||
|
||||
- (BOOL)isExpanded
|
||||
|
||||
@@ -172,30 +172,17 @@
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fNU-1q-AiR">
|
||||
<rect key="frame" x="0.0" y="127" width="320" height="122"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<gestureRecognizers/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="122" id="Ifb-EB-LIb"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hYN-dO-J0e" userLabel="Editor Button">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="249"/>
|
||||
<state key="normal" title="Button"/>
|
||||
<buttonConfiguration key="configuration" style="plain"/>
|
||||
<connections>
|
||||
<action selector="extendedToggleButtonTap" destination="KGk-i7-Jjw" eventType="touchUpInside" id="BSf-KC-HgD"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="fNU-1q-AiR" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" id="08I-np-9jr"/>
|
||||
<constraint firstAttribute="trailing" secondItem="hYN-dO-J0e" secondAttribute="trailing" id="0Vo-1D-dPq"/>
|
||||
<constraint firstAttribute="trailing" secondItem="fNU-1q-AiR" secondAttribute="trailing" id="2Hz-cA-KuN"/>
|
||||
<constraint firstItem="hYN-dO-J0e" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" id="GVQ-l4-vnQ"/>
|
||||
<constraint firstItem="0kQ-hh-2Cy" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="60" id="KwF-TF-PmH"/>
|
||||
<constraint firstAttribute="trailing" secondItem="0kQ-hh-2Cy" secondAttribute="trailing" constant="32" id="RqH-0b-AyG"/>
|
||||
<constraint firstItem="hYN-dO-J0e" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" id="Sav-rp-wo2"/>
|
||||
<constraint firstItem="swk-um-XzG" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" id="VsQ-qI-dIi"/>
|
||||
<constraint firstAttribute="bottom" secondItem="hYN-dO-J0e" secondAttribute="bottom" id="Xe1-4J-wRh"/>
|
||||
<constraint firstItem="0kQ-hh-2Cy" firstAttribute="top" secondItem="swk-um-XzG" secondAttribute="bottom" id="Xrh-Vg-VYg"/>
|
||||
<constraint firstItem="swk-um-XzG" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" id="p14-Mi-kcR"/>
|
||||
<constraint firstItem="fNU-1q-AiR" firstAttribute="top" secondItem="0kQ-hh-2Cy" secondAttribute="bottom" id="uKD-bb-yHT"/>
|
||||
@@ -205,7 +192,6 @@
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="styleName" value="Background"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</tableViewCellContentView>
|
||||
<gestureRecognizers/>
|
||||
<inset key="separatorInset" minX="60" minY="0.0" maxX="0.0" maxY="0.0"/>
|
||||
<connections>
|
||||
<outlet property="currentDay" destination="swk-um-XzG" id="CJG-LQ-Pu8"/>
|
||||
|
||||
@@ -18,8 +18,6 @@ set(SRC
|
||||
edits_migration.hpp
|
||||
feature_matcher.cpp
|
||||
feature_matcher.hpp
|
||||
feature_type_to_osm.cpp
|
||||
feature_type_to_osm.hpp
|
||||
new_feature_categories.cpp
|
||||
new_feature_categories.hpp
|
||||
opening_hours_ui.cpp
|
||||
|
||||
@@ -5,7 +5,6 @@ set(SRC
|
||||
editor_config_test.cpp
|
||||
editor_notes_test.cpp
|
||||
feature_matcher_test.cpp
|
||||
feature_type_to_osm_test.cpp
|
||||
match_by_geometry_test.cpp
|
||||
new_feature_categories_test.cpp
|
||||
opening_hours_ui_test.cpp
|
||||
|
||||
@@ -1,224 +0,0 @@
|
||||
#include "testing/testing.hpp"
|
||||
|
||||
#include "editor/feature_type_to_osm.hpp"
|
||||
|
||||
#include "indexer/classificator.hpp"
|
||||
#include "indexer/classificator_loader.hpp"
|
||||
|
||||
using namespace editor;
|
||||
|
||||
UNIT_TEST(simpleType)
|
||||
{
|
||||
std::string data =
|
||||
"amenity|restaurant;61;\n"
|
||||
"amenity|bicycle_parking;1071;\n";
|
||||
|
||||
classificator::Load();
|
||||
|
||||
TypeToOSMTranslator translator(false);
|
||||
std::stringstream s(data);
|
||||
translator.LoadFromStream(s);
|
||||
|
||||
uint32_t type = classif().GetTypeByReadableObjectName("amenity-restaurant");
|
||||
std::vector<OSMTag> result = translator.OsmTagsFromType(type);
|
||||
TEST_EQUAL(result.size(), 1, ());
|
||||
TEST_EQUAL(result[0].key, "amenity", ());
|
||||
TEST_EQUAL(result[0].value, "restaurant", ());
|
||||
}
|
||||
|
||||
UNIT_TEST(simpleTypeWithTags)
|
||||
{
|
||||
std::string data =
|
||||
"building;[building];;addr:housenumber;name;1;\n"
|
||||
"amenity|school;[amenity=school],[education=school];;name;int_name;36;\n"
|
||||
"amenity|doctors;[amenity=doctors][healthcare=doctor],[amenity=doctors],[healthcare=doctor];;name;int_name;207;\n";
|
||||
|
||||
classificator::Load();
|
||||
|
||||
TypeToOSMTranslator translator(false);
|
||||
std::stringstream s(data);
|
||||
translator.LoadFromStream(s);
|
||||
|
||||
uint32_t buildingType = classif().GetTypeByReadableObjectName("building");
|
||||
std::vector<OSMTag> buildingResult = translator.OsmTagsFromType(buildingType);
|
||||
TEST_EQUAL(buildingResult.size(), 1, ());
|
||||
TEST_EQUAL(buildingResult[0].key, "building", ());
|
||||
TEST_EQUAL(buildingResult[0].value, "yes", ());
|
||||
|
||||
uint32_t schoolType = classif().GetTypeByReadableObjectName("amenity-school");
|
||||
std::vector<OSMTag> schoolResult = translator.OsmTagsFromType(schoolType);
|
||||
TEST_EQUAL(schoolResult.size(), 1, ());
|
||||
TEST_EQUAL(schoolResult[0].key, "amenity", ());
|
||||
TEST_EQUAL(schoolResult[0].value, "school", ());
|
||||
|
||||
uint32_t doctorType = classif().GetTypeByReadableObjectName("amenity-doctors");
|
||||
std::vector<OSMTag> doctorResult = translator.OsmTagsFromType(doctorType);
|
||||
TEST_EQUAL(doctorResult.size(), 2, ());
|
||||
TEST_EQUAL(doctorResult[0].key, "amenity", ());
|
||||
TEST_EQUAL(doctorResult[0].value, "doctors", ());
|
||||
TEST_EQUAL(doctorResult[1].key, "healthcare", ());
|
||||
TEST_EQUAL(doctorResult[1].value, "doctor", ());
|
||||
}
|
||||
|
||||
UNIT_TEST(complexType)
|
||||
{
|
||||
std::string data =
|
||||
"building;[building];;addr:housenumber;name;1;\n"
|
||||
" # comment that should be ignored\n"
|
||||
"\n"
|
||||
"amenity|restaurant;61;\n"
|
||||
"tourism|information|office;[tourism=information][information=office];;name;int_name;313;\n"
|
||||
"historic|castle|fortress;[historic=castle][castle_type=fortress],[historic=fortress];;name;int_name;1144;\n"
|
||||
"#comment\n"
|
||||
"amenity|place_of_worship|christian|mormon;[amenity=place_of_worship][religion=christian][denomination=mormon];;name;int_name;1572;\n";
|
||||
|
||||
classificator::Load();
|
||||
|
||||
TypeToOSMTranslator translator(false);
|
||||
std::stringstream s(data);
|
||||
translator.LoadFromStream(s);
|
||||
|
||||
uint32_t officeType = classif().GetTypeByReadableObjectName("tourism-information-office");
|
||||
std::vector<OSMTag> officeResult = translator.OsmTagsFromType(officeType);
|
||||
TEST_EQUAL(officeResult.size(), 2, ());
|
||||
TEST_EQUAL(officeResult[0].key, "tourism", ());
|
||||
TEST_EQUAL(officeResult[0].value, "information", ());
|
||||
TEST_EQUAL(officeResult[1].key, "information", ());
|
||||
TEST_EQUAL(officeResult[1].value, "office", ());
|
||||
|
||||
uint32_t fortressType = classif().GetTypeByReadableObjectName("historic-castle-fortress");
|
||||
std::vector<OSMTag> fortressResult = translator.OsmTagsFromType(fortressType);
|
||||
TEST_EQUAL(fortressResult.size(), 2, ());
|
||||
TEST_EQUAL(fortressResult[0].key, "historic", ());
|
||||
TEST_EQUAL(fortressResult[0].value, "castle", ());
|
||||
TEST_EQUAL(fortressResult[1].key, "castle_type", ());
|
||||
TEST_EQUAL(fortressResult[1].value, "fortress", ());
|
||||
|
||||
uint32_t mormonType = classif().GetTypeByReadableObjectName("amenity-place_of_worship-christian-mormon");
|
||||
std::vector<OSMTag> mormonResult = translator.OsmTagsFromType(mormonType);
|
||||
TEST_EQUAL(mormonResult.size(), 3, ());
|
||||
TEST_EQUAL(mormonResult[0].key, "amenity", ());
|
||||
TEST_EQUAL(mormonResult[0].value, "place_of_worship", ());
|
||||
TEST_EQUAL(mormonResult[1].key, "religion", ());
|
||||
TEST_EQUAL(mormonResult[1].value, "christian", ());
|
||||
TEST_EQUAL(mormonResult[2].key, "denomination", ());
|
||||
TEST_EQUAL(mormonResult[2].value, "mormon", ());
|
||||
}
|
||||
|
||||
UNIT_TEST(mandatorySelector)
|
||||
{
|
||||
std::string data =
|
||||
"amenity|parking|fee;[amenity=parking][fee];;name;int_name;125;\n"
|
||||
"highway|track|bridge;[highway=track][bridge?];;name;int_name;193;\n"
|
||||
"shop;[shop?];;name;int_name;943;\n"
|
||||
"disusedbusiness;[disused:shop?],[disused:amenity=restaurant],[disused:amenity=fast_food],[disused:amenity=cafe],[disused:amenity=pub],[disused:amenity=bar];;;;1237;\n";
|
||||
|
||||
classificator::Load();
|
||||
|
||||
TypeToOSMTranslator translator(false);
|
||||
std::stringstream s(data);
|
||||
translator.LoadFromStream(s);
|
||||
|
||||
uint32_t parkingType = classif().GetTypeByReadableObjectName("amenity-parking-fee");
|
||||
std::vector<OSMTag> parkingResult = translator.OsmTagsFromType(parkingType);
|
||||
TEST_EQUAL(parkingResult.size(), 2, ());
|
||||
TEST_EQUAL(parkingResult[0].key, "amenity", ());
|
||||
TEST_EQUAL(parkingResult[0].value, "parking", ());
|
||||
TEST_EQUAL(parkingResult[1].key, "fee", ());
|
||||
TEST_EQUAL(parkingResult[1].value, "yes", ());
|
||||
|
||||
uint32_t trackType = classif().GetTypeByReadableObjectName("highway-track-bridge");
|
||||
std::vector<OSMTag> trackResult = translator.OsmTagsFromType(trackType);
|
||||
TEST_EQUAL(trackResult.size(), 2, ());
|
||||
TEST_EQUAL(trackResult[0].key, "highway", ());
|
||||
TEST_EQUAL(trackResult[0].value, "track", ());
|
||||
TEST_EQUAL(trackResult[1].key, "bridge", ());
|
||||
TEST_EQUAL(trackResult[1].value, "yes", ());
|
||||
|
||||
uint32_t shopType = classif().GetTypeByReadableObjectName("shop");
|
||||
std::vector<OSMTag> shopResult = translator.OsmTagsFromType(shopType);
|
||||
TEST_EQUAL(shopResult.size(), 1, ());
|
||||
TEST_EQUAL(shopResult[0].key, "shop", ());
|
||||
TEST_EQUAL(shopResult[0].value, "yes", ());
|
||||
|
||||
uint32_t disusedType = classif().GetTypeByReadableObjectName("disusedbusiness");
|
||||
std::vector<OSMTag> disusedResult = translator.OsmTagsFromType(disusedType);
|
||||
TEST_EQUAL(disusedResult.size(), 1, ());
|
||||
TEST_EQUAL(disusedResult[0].key, "disused:shop", ());
|
||||
TEST_EQUAL(disusedResult[0].value, "yes", ());
|
||||
}
|
||||
|
||||
UNIT_TEST(forbiddenSelector)
|
||||
{
|
||||
std::string data =
|
||||
"amenity|lounger;[amenity=lounger][!seasonal];;name;int_name;153;\n"
|
||||
"amenity|charging_station|motorcar|small;[amenity=charging_station][motorcar?][!capacity],[amenity=charging_station][motorcar?][capacity=1],[amenity=charging_station][motorcar?][capacity=2];;name;int_name;201;\n";
|
||||
|
||||
classificator::Load();
|
||||
|
||||
TypeToOSMTranslator translator(false);
|
||||
std::stringstream s(data);
|
||||
translator.LoadFromStream(s);
|
||||
|
||||
uint32_t loungerType = classif().GetTypeByReadableObjectName("amenity-lounger");
|
||||
std::vector<OSMTag> loungerResult = translator.OsmTagsFromType(loungerType);
|
||||
TEST_EQUAL(loungerResult.size(), 1, ());
|
||||
TEST_EQUAL(loungerResult[0].key, "amenity", ());
|
||||
TEST_EQUAL(loungerResult[0].value, "lounger", ());
|
||||
|
||||
uint32_t chargingType = classif().GetTypeByReadableObjectName("amenity-charging_station-motorcar-small");
|
||||
std::vector<OSMTag> chargingResult = translator.OsmTagsFromType(chargingType);
|
||||
TEST_EQUAL(chargingResult.size(), 2, ());
|
||||
TEST_EQUAL(chargingResult[0].key, "amenity", ());
|
||||
TEST_EQUAL(chargingResult[0].value, "charging_station", ());
|
||||
TEST_EQUAL(chargingResult[1].key, "motorcar", ());
|
||||
TEST_EQUAL(chargingResult[1].value, "yes", ());
|
||||
}
|
||||
|
||||
UNIT_TEST(ignoreComments)
|
||||
{
|
||||
std::string data =
|
||||
"building;[building];;addr:housenumber;name;1;\n"
|
||||
" # comment that should be ignored\n"
|
||||
"\n"
|
||||
"deprecated:waterway|riverbank:05.2024;52;x\n"
|
||||
"amenity|restaurant;61;\n"
|
||||
"moved:amenity|telephone:05.2024;122;amenity|telephone\n"
|
||||
"natural|lake;564;natural|water|lake\n"; // moved type, should be ignored
|
||||
|
||||
classificator::Load();
|
||||
|
||||
TypeToOSMTranslator translator(false);
|
||||
std::stringstream s(data);
|
||||
translator.LoadFromStream(s);
|
||||
}
|
||||
|
||||
UNIT_TEST(loadConfigFile)
|
||||
{
|
||||
TypeToOSMTranslator translator(false);
|
||||
translator.LoadConfigFile();
|
||||
|
||||
size_t size = translator.GetStorage().size();
|
||||
LOG(LINFO, ("Size of feature type storage:", size));
|
||||
ASSERT(size > 1300, ());
|
||||
ASSERT(size < 1700, ());
|
||||
}
|
||||
|
||||
UNIT_TEST(testWithRealFile)
|
||||
{
|
||||
classificator::Load();
|
||||
|
||||
uint32_t restaurantType = classif().GetTypeByReadableObjectName("amenity-restaurant");
|
||||
std::vector<OSMTag> restaurantResult = GetOSMTranslator().OsmTagsFromType(restaurantType);
|
||||
TEST_EQUAL(restaurantResult.size(), 1, ());
|
||||
TEST_EQUAL(restaurantResult[0].key, "amenity", ());
|
||||
TEST_EQUAL(restaurantResult[0].value, "restaurant", ());
|
||||
|
||||
uint32_t officeType = classif().GetTypeByReadableObjectName("tourism-information-office");
|
||||
std::vector<OSMTag> officeResult = GetOSMTranslator().OsmTagsFromType(officeType);
|
||||
TEST_EQUAL(officeResult.size(), 2, ());
|
||||
TEST_EQUAL(officeResult[0].key, "tourism", ());
|
||||
TEST_EQUAL(officeResult[0].value, "information", ());
|
||||
TEST_EQUAL(officeResult[1].key, "information", ());
|
||||
TEST_EQUAL(officeResult[1].value, "office", ());
|
||||
}
|
||||
@@ -406,7 +406,7 @@ void EditorTest::GetFeatureStatusTest()
|
||||
TEST_EQUAL(editor.GetFeatureStatus(emo.GetID()), FeatureStatus::Created, ());
|
||||
}
|
||||
|
||||
void EditorTest::AreSomeFeatureChangesUploadedTest()
|
||||
void EditorTest::IsFeatureUploadedTest()
|
||||
{
|
||||
auto & editor = osm::Editor::Instance();
|
||||
|
||||
@@ -419,25 +419,19 @@ void EditorTest::AreSomeFeatureChangesUploadedTest()
|
||||
});
|
||||
|
||||
ForEachCafeAtPoint(m_dataSource, m2::PointD(1.0, 1.0), [&editor](FeatureType & ft)
|
||||
{ TEST(!editor.AreSomeFeatureChangesUploaded(ft.GetID().m_mwmId, ft.GetID().m_index), ()); });
|
||||
{ TEST(!editor.IsFeatureUploaded(ft.GetID().m_mwmId, ft.GetID().m_index), ()); });
|
||||
|
||||
osm::EditableMapObject emo;
|
||||
CreateCafeAtPoint({3.0, 3.0}, mwmId, emo);
|
||||
|
||||
TEST(!editor.AreSomeFeatureChangesUploaded(emo.GetID().m_mwmId, emo.GetID().m_index), ());
|
||||
|
||||
// generate journal with uploaded changes
|
||||
osm::EditJournal journal;
|
||||
journal.AddTagChange("addr:housenumber", "", "42");
|
||||
journal.Clear();
|
||||
emo.SetJournal(std::move(journal));
|
||||
TEST(!editor.IsFeatureUploaded(emo.GetID().m_mwmId, emo.GetID().m_index), ());
|
||||
|
||||
pugi::xml_document doc;
|
||||
GenerateUploadedFeature(mwmId, emo, doc);
|
||||
editor.m_storage->Save(doc);
|
||||
editor.LoadEdits();
|
||||
|
||||
TEST(editor.AreSomeFeatureChangesUploaded(emo.GetID().m_mwmId, emo.GetID().m_index), ());
|
||||
TEST(editor.IsFeatureUploaded(emo.GetID().m_mwmId, emo.GetID().m_index), ());
|
||||
}
|
||||
|
||||
void EditorTest::DeleteFeatureTest()
|
||||
@@ -1315,9 +1309,9 @@ UNIT_CLASS_TEST(EditorTest, GetFeatureStatusTest)
|
||||
EditorTest::GetFeatureStatusTest();
|
||||
}
|
||||
|
||||
UNIT_CLASS_TEST(EditorTest, AreSomeFeatureChangesUploadedTest)
|
||||
UNIT_CLASS_TEST(EditorTest, IsFeatureUploadedTest)
|
||||
{
|
||||
EditorTest::AreSomeFeatureChangesUploadedTest();
|
||||
EditorTest::IsFeatureUploadedTest();
|
||||
}
|
||||
|
||||
UNIT_CLASS_TEST(EditorTest, DeleteFeatureTest)
|
||||
|
||||
@@ -31,7 +31,7 @@ public:
|
||||
void SetIndexTest();
|
||||
void GetEditedFeatureStreetTest();
|
||||
void GetFeatureStatusTest();
|
||||
void AreSomeFeatureChangesUploadedTest();
|
||||
void IsFeatureUploadedTest();
|
||||
void DeleteFeatureTest();
|
||||
void ClearAllLocalEditsTest();
|
||||
void GetFeaturesByStatusTest();
|
||||
|
||||
@@ -1,166 +0,0 @@
|
||||
#include "editor/feature_type_to_osm.hpp"
|
||||
|
||||
#include "base/assert.hpp"
|
||||
#include "coding/reader_streambuf.hpp"
|
||||
#include "indexer/classificator.hpp"
|
||||
#include "platform/platform.hpp"
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace editor
|
||||
{
|
||||
TypeToOSMTranslator::TypeToOSMTranslator(bool initialize)
|
||||
{
|
||||
if (initialize)
|
||||
LoadConfigFile();
|
||||
}
|
||||
|
||||
void TypeToOSMTranslator::LoadConfigFile()
|
||||
{
|
||||
Platform & p = GetPlatform();
|
||||
std::unique_ptr<ModelReader> reader = p.GetReader("mapcss-mapping.csv");
|
||||
ReaderStreamBuf buffer(std::move(reader));
|
||||
std::istream s(&buffer);
|
||||
|
||||
LoadFromStream(s);
|
||||
}
|
||||
|
||||
void TypeToOSMTranslator::LoadFromStream(std::istream & s)
|
||||
{
|
||||
m_storage.clear();
|
||||
|
||||
std::string line;
|
||||
while (s.good())
|
||||
{
|
||||
getline(s, line);
|
||||
strings::Trim(line);
|
||||
|
||||
// skip empty lines, comments, deprecated and moved types
|
||||
if (line.empty() || line.front() == '#' || line.starts_with("deprecated") || line.starts_with("moved") ||
|
||||
line.back() != ';')
|
||||
continue;
|
||||
|
||||
std::vector<std::string_view> const rowTokens = strings::Tokenize(line, ";");
|
||||
if (rowTokens.size() < 2)
|
||||
{
|
||||
ASSERT(false, ("Invalid feature type definition:", line));
|
||||
continue;
|
||||
}
|
||||
|
||||
// Get internal feature type
|
||||
std::vector<std::string_view> const featureTypeTokens = strings::Tokenize(rowTokens[0], "|");
|
||||
uint32_t const type = classif().GetTypeByPathSafe(featureTypeTokens);
|
||||
ASSERT(type != IndexAndTypeMapping::INVALID_TYPE, ("Feature with invalid type:", line));
|
||||
|
||||
if (rowTokens.size() == 2)
|
||||
{
|
||||
// Derive OSM tags from type name
|
||||
ASSERT(featureTypeTokens.size() <= 2, ("OSM tags can not be inferred from name:", line));
|
||||
|
||||
OSMTag osmTag;
|
||||
|
||||
// e.g. "amenity-restaurant"
|
||||
if (featureTypeTokens.size() >= 2)
|
||||
{
|
||||
osmTag.key = featureTypeTokens[0];
|
||||
osmTag.value = featureTypeTokens[1];
|
||||
}
|
||||
// e.g. "building"
|
||||
else if (featureTypeTokens.size() == 1)
|
||||
{
|
||||
osmTag.key = featureTypeTokens[0];
|
||||
osmTag.value = "yes";
|
||||
}
|
||||
|
||||
m_storage.insert({type, {osmTag}});
|
||||
}
|
||||
else
|
||||
{
|
||||
// OSM tags are listed in the feature type entry
|
||||
std::vector<std::string_view> const osmTagTokens = strings::Tokenize(rowTokens[1], ",");
|
||||
|
||||
// First entry is the best practice way to tag a feature
|
||||
std::string_view const osmTagList = osmTagTokens[0];
|
||||
|
||||
// Process OSM tag list (e.g. "[tourism=information][information=office]")
|
||||
std::vector<OSMTag> osmTags;
|
||||
size_t pos = 0;
|
||||
|
||||
while ((pos = osmTagList.find('[', pos)) != std::string::npos)
|
||||
{
|
||||
size_t end = osmTagList.find(']', pos);
|
||||
|
||||
if (end == std::string::npos)
|
||||
{
|
||||
ASSERT(false, ("Bracket not closed in OSM tag:", line));
|
||||
break;
|
||||
}
|
||||
|
||||
std::string_view keyValuePair = osmTagList.substr(pos + 1, end - pos - 1);
|
||||
|
||||
if (keyValuePair.empty())
|
||||
{
|
||||
ASSERT(false, ("Key value pair is empty:", line));
|
||||
break;
|
||||
}
|
||||
|
||||
size_t equalSign = keyValuePair.find('=');
|
||||
if (equalSign != std::string::npos)
|
||||
{
|
||||
// Tags in key=value format
|
||||
OSMTag osmTag;
|
||||
osmTag.key = keyValuePair.substr(0, equalSign);
|
||||
osmTag.value = keyValuePair.substr(equalSign + 1);
|
||||
|
||||
// mapcss-mapping.csv uses 'not' instead of 'no' as a workaround for the rendering engine
|
||||
if (osmTag.value == "not")
|
||||
osmTag.value = "no";
|
||||
|
||||
osmTags.push_back(osmTag);
|
||||
}
|
||||
else if (keyValuePair.front() == '!')
|
||||
{
|
||||
// Tags with "forbidden" selector '!' are skipped
|
||||
}
|
||||
else
|
||||
{
|
||||
// Tags with optional "mandatory" selector '?'
|
||||
if (keyValuePair.back() == '?')
|
||||
keyValuePair.remove_suffix(1);
|
||||
|
||||
OSMTag osmTag;
|
||||
osmTag.key = keyValuePair;
|
||||
osmTag.value = "yes";
|
||||
|
||||
osmTags.push_back(osmTag);
|
||||
}
|
||||
|
||||
pos = end + 1;
|
||||
}
|
||||
|
||||
ASSERT(!osmTags.empty(), ("No OSM tags found for feature:", line));
|
||||
|
||||
m_storage.insert({type, osmTags});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<OSMTag> const & TypeToOSMTranslator::OsmTagsFromType(uint32_t type) const
|
||||
{
|
||||
auto it = m_storage.find(type);
|
||||
|
||||
if (it == m_storage.end())
|
||||
{
|
||||
ASSERT(false, ("OSM tags for type", type, "could not be found"));
|
||||
return kEmptyResult;
|
||||
}
|
||||
|
||||
return it->second;
|
||||
}
|
||||
|
||||
TypeToOSMTranslator const & GetOSMTranslator()
|
||||
{
|
||||
static TypeToOSMTranslator translator;
|
||||
return translator;
|
||||
}
|
||||
} // namespace editor
|
||||
@@ -1,36 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
|
||||
namespace editor
|
||||
{
|
||||
|
||||
struct OSMTag
|
||||
{
|
||||
std::string key;
|
||||
std::string value;
|
||||
};
|
||||
|
||||
class TypeToOSMTranslator
|
||||
{
|
||||
public:
|
||||
std::vector<OSMTag> static constexpr kEmptyResult = {};
|
||||
|
||||
TypeToOSMTranslator() : TypeToOSMTranslator(true) {}
|
||||
explicit TypeToOSMTranslator(bool initialize);
|
||||
|
||||
void LoadConfigFile();
|
||||
void LoadFromStream(std::istream & s);
|
||||
std::vector<OSMTag> const & OsmTagsFromType(uint32_t type) const;
|
||||
|
||||
std::unordered_map<uint32_t, std::vector<OSMTag>> const & GetStorage() const { return m_storage; }
|
||||
|
||||
private:
|
||||
std::unordered_map<uint32_t, std::vector<OSMTag>> m_storage;
|
||||
};
|
||||
|
||||
TypeToOSMTranslator const & GetOSMTranslator();
|
||||
|
||||
} // namespace editor
|
||||
@@ -279,10 +279,10 @@ FeatureStatus Editor::GetFeatureStatus(FeatureID const & fid) const
|
||||
return GetFeatureStatusImpl(*features, fid.m_mwmId, fid.m_index);
|
||||
}
|
||||
|
||||
bool Editor::AreSomeFeatureChangesUploaded(MwmId const & mwmId, uint32_t index) const
|
||||
bool Editor::IsFeatureUploaded(MwmId const & mwmId, uint32_t index) const
|
||||
{
|
||||
auto const features = m_features.Get();
|
||||
return AreSomeFeatureChangesUploadedImpl(*features, mwmId, index);
|
||||
return IsFeatureUploadedImpl(*features, mwmId, index);
|
||||
}
|
||||
|
||||
void Editor::DeleteFeature(FeatureID const & fid)
|
||||
@@ -425,7 +425,7 @@ bool Editor::RollBackChanges(FeatureID const & fid)
|
||||
{
|
||||
CHECK_THREAD_CHECKER(MainThreadChecker, (""));
|
||||
|
||||
if (AreSomeFeatureChangesUploaded(fid.m_mwmId, fid.m_index))
|
||||
if (IsFeatureUploaded(fid.m_mwmId, fid.m_index))
|
||||
return false;
|
||||
|
||||
return RemoveFeature(fid);
|
||||
@@ -982,7 +982,7 @@ void Editor::CreateNote(ms::LatLon const & latLon, FeatureID const & fid, featur
|
||||
"but was not found on the ground.\n";
|
||||
auto const features = m_features.Get();
|
||||
auto const isCreated = GetFeatureStatusImpl(*features, fid.m_mwmId, fid.m_index) == FeatureStatus::Created;
|
||||
auto const createdAndUploaded = (isCreated && AreSomeFeatureChangesUploadedImpl(*features, fid.m_mwmId, fid.m_index));
|
||||
auto const createdAndUploaded = (isCreated && IsFeatureUploadedImpl(*features, fid.m_mwmId, fid.m_index));
|
||||
CHECK(!isCreated || createdAndUploaded, ());
|
||||
|
||||
if (createdAndUploaded)
|
||||
@@ -1177,10 +1177,10 @@ FeatureStatus Editor::GetFeatureStatusImpl(FeaturesContainer const & features, M
|
||||
return featureInfo->m_status;
|
||||
}
|
||||
|
||||
bool Editor::AreSomeFeatureChangesUploadedImpl(FeaturesContainer const & features, MwmId const & mwmId, uint32_t index)
|
||||
bool Editor::IsFeatureUploadedImpl(FeaturesContainer const & features, MwmId const & mwmId, uint32_t index)
|
||||
{
|
||||
auto const * info = GetFeatureTypeInfo(features, mwmId, index);
|
||||
return info && !info->m_object.GetJournal().GetJournalHistory().empty();
|
||||
return info && info->m_uploadStatus == kUploaded;
|
||||
}
|
||||
|
||||
void Editor::UpdateXMLFeatureTags(editor::XMLFeature & feature, std::list<JournalEntry> const & journal,
|
||||
|
||||
@@ -125,7 +125,7 @@ public:
|
||||
FeatureStatus GetFeatureStatus(FeatureID const & fid) const;
|
||||
|
||||
/// @returns true if a feature was uploaded to osm.
|
||||
bool AreSomeFeatureChangesUploaded(MwmId const & mwmId, uint32_t index) const;
|
||||
bool IsFeatureUploaded(MwmId const & mwmId, uint32_t index) const;
|
||||
|
||||
/// Marks feature as "deleted" from MwM file.
|
||||
void DeleteFeature(FeatureID const & fid);
|
||||
@@ -240,7 +240,7 @@ private:
|
||||
|
||||
static FeatureStatus GetFeatureStatusImpl(FeaturesContainer const & features, MwmId const & mwmId, uint32_t index);
|
||||
|
||||
static bool AreSomeFeatureChangesUploadedImpl(FeaturesContainer const & features, MwmId const & mwmId, uint32_t index);
|
||||
static bool IsFeatureUploadedImpl(FeaturesContainer const & features, MwmId const & mwmId, uint32_t index);
|
||||
|
||||
static void UpdateXMLFeatureTags(editor::XMLFeature & feature, std::list<JournalEntry> const & journal,
|
||||
ChangesetWrapper & changeset);
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
#include "editor/xml_feature.hpp"
|
||||
|
||||
#include "editor/feature_type_to_osm.hpp"
|
||||
#include "editor/keys_to_remove.hpp"
|
||||
|
||||
#include "indexer/classificator.hpp"
|
||||
@@ -642,16 +640,36 @@ void XMLFeature::RemoveTag(string_view key)
|
||||
|
||||
void XMLFeature::SetOSMTagsForType(uint32_t type)
|
||||
{
|
||||
if (ftypes::IsAddressChecker::Instance()(type))
|
||||
if (ftypes::IsRecyclingCentreChecker::Instance()(type))
|
||||
{
|
||||
SetTagValue("amenity", "recycling");
|
||||
SetTagValue("recycling_type", "centre");
|
||||
}
|
||||
else if (ftypes::IsRecyclingContainerChecker::Instance()(type))
|
||||
{
|
||||
SetTagValue("amenity", "recycling");
|
||||
SetTagValue("recycling_type", "container");
|
||||
}
|
||||
else if (ftypes::IsAddressChecker::Instance()(type))
|
||||
{
|
||||
// Addresses don't have a category tag
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
string const strType = classif().GetReadableObjectName(type);
|
||||
strings::SimpleTokenizer iter(strType, "-");
|
||||
string_view const k = *iter;
|
||||
|
||||
std::vector<OSMTag> const & osmTags = GetOSMTranslator().OsmTagsFromType(type);
|
||||
|
||||
for (auto const & osmTag : osmTags)
|
||||
SetTagValue(osmTag.key, osmTag.value);
|
||||
if (++iter)
|
||||
{
|
||||
// Main type is stored as "k=amenity v=restaurant"
|
||||
SetTagValue(k, *iter);
|
||||
}
|
||||
else {
|
||||
// Main type is stored as "k=building v=yes"
|
||||
SetTagValue(k, kYes);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void XMLFeature::UpdateOSMTag(std::string_view key, std::string_view value)
|
||||
|
||||
@@ -191,21 +191,9 @@ void TypesHolder::SortBySpec()
|
||||
auto const getPriority = [&cl](uint32_t type) { return cl.GetObject(type)->GetMaxOverlaysPriority(); };
|
||||
|
||||
auto const & checker = UselessTypesChecker::Instance();
|
||||
auto const & isChargingStationChecker = ftypes::IsCharingStationChecker::Instance();
|
||||
auto const & isChargingStationSmallChecker = ftypes::IsCharingStationSmallChecker::Instance();
|
||||
|
||||
std::stable_sort(begin(), end(), [&checker, &getPriority, &isChargingStationChecker, &isChargingStationSmallChecker](uint32_t t1, uint32_t t2)
|
||||
std::stable_sort(begin(), end(), [&checker, &getPriority](uint32_t t1, uint32_t t2)
|
||||
{
|
||||
if (isChargingStationSmallChecker(t1) && !isChargingStationSmallChecker(t2))
|
||||
return false;
|
||||
else if (isChargingStationSmallChecker(t1) && !isChargingStationSmallChecker(t2))
|
||||
return true;
|
||||
|
||||
if (isChargingStationChecker(t1) && !isChargingStationChecker(t2))
|
||||
return true;
|
||||
else if (isChargingStationChecker(t2) && !isChargingStationChecker(t1))
|
||||
return false;
|
||||
|
||||
int const p1 = getPriority(t1);
|
||||
int const p2 = getPriority(t2);
|
||||
if (p1 != p2)
|
||||
@@ -415,13 +403,6 @@ void FeatureParams::SetRwSubwayType(char const * cityName)
|
||||
|
||||
FeatureParams::TypesResult FeatureParams::FinishAddingTypesEx()
|
||||
{
|
||||
auto const & cl = classif();
|
||||
auto charingStation = cl.GetTypeByPath({"amenity", "charging_station", "general"});
|
||||
auto motorcarCharingStation = cl.GetTypeByPath({"amenity", "charging_station", "motorcar"});
|
||||
auto carelessCharingStation = cl.GetTypeByPath({"amenity", "charging_station", "carless"});
|
||||
if (IsTypeExist(charingStation) && !IsTypeExist(motorcarCharingStation) && !IsTypeExist(carelessCharingStation))
|
||||
AddType(motorcarCharingStation);
|
||||
|
||||
base::SortUnique(m_types);
|
||||
|
||||
TypesResult res = TYPES_GOOD;
|
||||
|
||||
@@ -753,30 +753,6 @@ IsDirectionalChecker::IsDirectionalChecker() : ftypes::BaseChecker(1 /* level */
|
||||
m_types.push_back(c.GetTypeByPath({"lateral"}));
|
||||
}
|
||||
|
||||
IsCharingStationChecker::IsCharingStationChecker() : ftypes::BaseChecker(3 /* level */)
|
||||
{
|
||||
Classificator const & c = classif();
|
||||
m_types.push_back(c.GetTypeByPath({"amenity", "charging_station", "general"}));
|
||||
}
|
||||
|
||||
IsCharingStationCarChecker::IsCharingStationCarChecker() : ftypes::BaseChecker(3 /* level */)
|
||||
{
|
||||
Classificator const & c = classif();
|
||||
m_types.push_back(c.GetTypeByPath({"amenity", "charging_station", "motorcar"}));
|
||||
}
|
||||
|
||||
IsCharingStationCarlessChecker::IsCharingStationCarlessChecker() : ftypes::BaseChecker(3 /* level */)
|
||||
{
|
||||
Classificator const & c = classif();
|
||||
m_types.push_back(c.GetTypeByPath({"amenity", "charging_station", "carless"}));
|
||||
}
|
||||
|
||||
IsCharingStationSmallChecker::IsCharingStationSmallChecker() : ftypes::BaseChecker(3 /* level */)
|
||||
{
|
||||
Classificator const & c = classif();
|
||||
m_types.push_back(c.GetTypeByPath({"amenity", "charging_station", "small"}));
|
||||
}
|
||||
|
||||
IsTaxiChecker::IsTaxiChecker()
|
||||
{
|
||||
Classificator const & c = classif();
|
||||
|
||||
@@ -519,38 +519,6 @@ public:
|
||||
DECLARE_CHECKER_INSTANCE(IsDirectionalChecker);
|
||||
};
|
||||
|
||||
class IsCharingStationChecker : public ftypes::BaseChecker
|
||||
{
|
||||
IsCharingStationChecker();
|
||||
|
||||
public:
|
||||
DECLARE_CHECKER_INSTANCE(IsCharingStationChecker);
|
||||
};
|
||||
|
||||
class IsCharingStationCarChecker : public ftypes::BaseChecker
|
||||
{
|
||||
IsCharingStationCarChecker();
|
||||
|
||||
public:
|
||||
DECLARE_CHECKER_INSTANCE(IsCharingStationCarChecker);
|
||||
};
|
||||
|
||||
class IsCharingStationCarlessChecker : public ftypes::BaseChecker
|
||||
{
|
||||
IsCharingStationCarlessChecker();
|
||||
|
||||
public:
|
||||
DECLARE_CHECKER_INSTANCE(IsCharingStationCarlessChecker);
|
||||
};
|
||||
|
||||
class IsCharingStationSmallChecker : public ftypes::BaseChecker
|
||||
{
|
||||
IsCharingStationSmallChecker();
|
||||
|
||||
public:
|
||||
DECLARE_CHECKER_INSTANCE(IsCharingStationSmallChecker);
|
||||
};
|
||||
|
||||
class IsTaxiChecker : public BaseChecker
|
||||
{
|
||||
IsTaxiChecker();
|
||||
|
||||
@@ -121,19 +121,12 @@ std::string MapObject::GetLocalizedAllTypes(bool withMainType) const
|
||||
auto const & isPoi = ftypes::IsPoiChecker::Instance();
|
||||
auto const & isDirectional = ftypes::IsDirectionalChecker::Instance();
|
||||
auto const & amenityChecker = ftypes::IsAmenityChecker::Instance();
|
||||
auto const & charingStationCarChecker = ftypes::IsCharingStationCarChecker::Instance();
|
||||
auto const & charingStationCarlessChecker = ftypes::IsCharingStationCarlessChecker::Instance();
|
||||
auto const & charingStationSmallChecker = ftypes::IsCharingStationSmallChecker::Instance();
|
||||
|
||||
std::ostringstream oss;
|
||||
bool isMainType = true;
|
||||
bool isFirst = true;
|
||||
for (auto const type : copy)
|
||||
{
|
||||
// Ignore some charing stations
|
||||
if (charingStationCarlessChecker(type) || ((charingStationCarChecker(type) || charingStationSmallChecker(type)) && charingStationCarlessChecker(copy)))
|
||||
continue;
|
||||
|
||||
if (isMainType && !withMainType)
|
||||
{
|
||||
isMainType = false;
|
||||
|
||||
@@ -86,9 +86,7 @@ std::map<std::string, BookmarkMatchInfo> const kFeatureTypeToBookmarkMatchInfo =
|
||||
{"amenity-bureau_de_change", {kml::BookmarkIcon::Exchange, BookmarkBaseType::Exchange}},
|
||||
|
||||
{"amenity-charging_station", {kml::BookmarkIcon::ChargingStation, BookmarkBaseType::Gas}},
|
||||
{"amenity-charging_station-general", {kml::BookmarkIcon::ChargingStation, BookmarkBaseType::Gas}},
|
||||
{"amenity-charging_station-bicycle", {kml::BookmarkIcon::ChargingStation, BookmarkBaseType::Gas}},
|
||||
{"amenity-charging_station-motorcycle", {kml::BookmarkIcon::ChargingStation, BookmarkBaseType::Gas}},
|
||||
{"amenity-charging_station-motorcar", {kml::BookmarkIcon::ChargingStation, BookmarkBaseType::Gas}},
|
||||
{"amenity-fuel", {kml::BookmarkIcon::Gas, BookmarkBaseType::Gas}},
|
||||
|
||||
|
||||
@@ -228,9 +228,7 @@ private:
|
||||
{{"shop", "money_lender"}, SearchMarkType::Bank},
|
||||
{{"amenity", "fuel"}, SearchMarkType::Fuel},
|
||||
{{"amenity", "charging_station"}, SearchMarkType::ChargingStation},
|
||||
{{"amenity", "charging_station", "general"}, SearchMarkType::ChargingStation},
|
||||
{{"amenity", "charging_station", "bicycle"}, SearchMarkType::ChargingStation},
|
||||
{{"amenity", "charging_station", "motorcycle"}, SearchMarkType::ChargingStation},
|
||||
{{"amenity", "charging_station", "motorcar"}, SearchMarkType::ChargingStation},
|
||||
{{"shop", "alcohol"}, SearchMarkType::ShopAlcohol},
|
||||
{{"shop", "beverages"}, SearchMarkType::ShopAlcohol},
|
||||
|
||||
@@ -126,7 +126,6 @@ copy_resources(
|
||||
patterns.txt
|
||||
transit_colors.txt
|
||||
types.txt
|
||||
mapcss-mapping.csv
|
||||
World.mwm
|
||||
WorldCoasts.mwm
|
||||
)
|
||||
|
||||
@@ -8,9 +8,6 @@
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
271DC2172EC60C0C00442D94 /* keys_to_remove.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 271DC2162EC60C0C00442D94 /* keys_to_remove.hpp */; };
|
||||
27FDBF1B2EEEFC3F0045621D /* feature_type_to_osm_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 27FDBF1A2EEEFC3F0045621D /* feature_type_to_osm_test.cpp */; };
|
||||
27FDBF1E2EEEFC5A0045621D /* feature_type_to_osm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 27FDBF1D2EEEFC5A0045621D /* feature_type_to_osm.cpp */; };
|
||||
27FDBF1F2EEEFC5A0045621D /* feature_type_to_osm.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 27FDBF1C2EEEFC5A0045621D /* feature_type_to_osm.hpp */; };
|
||||
340C20DE1C3E4DFD00111D22 /* osm_auth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 340C20DC1C3E4DFD00111D22 /* osm_auth.cpp */; };
|
||||
340C20DF1C3E4DFD00111D22 /* osm_auth.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 340C20DD1C3E4DFD00111D22 /* osm_auth.hpp */; };
|
||||
340DC8291C4E71E500EAA2CC /* changeset_wrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 340DC8271C4E71E500EAA2CC /* changeset_wrapper.cpp */; };
|
||||
@@ -80,10 +77,6 @@
|
||||
/* Begin PBXFileReference section */
|
||||
270C9C212E16AABF00ABA688 /* module.modulemap */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; name = module.modulemap; path = ../../libs/editor/module.modulemap; sourceTree = SOURCE_ROOT; };
|
||||
271DC2162EC60C0C00442D94 /* keys_to_remove.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = keys_to_remove.hpp; sourceTree = "<group>"; };
|
||||
27998A9E2EEEFE09001EAFD0 /* mapcss-mapping.csv */ = {isa = PBXFileReference; lastKnownFileType = text; name = "mapcss-mapping.csv"; path = "../../data/mapcss-mapping.csv"; sourceTree = SOURCE_ROOT; };
|
||||
27FDBF1A2EEEFC3F0045621D /* feature_type_to_osm_test.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = feature_type_to_osm_test.cpp; sourceTree = "<group>"; };
|
||||
27FDBF1C2EEEFC5A0045621D /* feature_type_to_osm.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = feature_type_to_osm.hpp; sourceTree = "<group>"; };
|
||||
27FDBF1D2EEEFC5A0045621D /* feature_type_to_osm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = feature_type_to_osm.cpp; sourceTree = "<group>"; };
|
||||
340C20DC1C3E4DFD00111D22 /* osm_auth.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = osm_auth.cpp; sourceTree = "<group>"; };
|
||||
340C20DD1C3E4DFD00111D22 /* osm_auth.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = osm_auth.hpp; sourceTree = "<group>"; };
|
||||
340DC8271C4E71E500EAA2CC /* changeset_wrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = changeset_wrapper.cpp; sourceTree = "<group>"; };
|
||||
@@ -206,7 +199,6 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3496AC041DC204B700C5DDBA /* editor.config */,
|
||||
27998A9E2EEEFE09001EAFD0 /* mapcss-mapping.csv */,
|
||||
270C9C212E16AABF00ABA688 /* module.modulemap */,
|
||||
34F5586E1DBF49B200A4FC11 /* common-debug.xcconfig */,
|
||||
34F5586F1DBF49B200A4FC11 /* common-release.xcconfig */,
|
||||
@@ -250,8 +242,6 @@
|
||||
6715560420BEC331002BA3B4 /* edits_migration.hpp */,
|
||||
3D052486200F62ED00F24998 /* feature_matcher.cpp */,
|
||||
3D052485200F62ED00F24998 /* feature_matcher.hpp */,
|
||||
27FDBF1D2EEEFC5A0045621D /* feature_type_to_osm.cpp */,
|
||||
27FDBF1C2EEEFC5A0045621D /* feature_type_to_osm.hpp */,
|
||||
271DC2162EC60C0C00442D94 /* keys_to_remove.hpp */,
|
||||
6715565220BF0F86002BA3B4 /* new_feature_categories.cpp */,
|
||||
6715565320BF0F87002BA3B4 /* new_feature_categories.hpp */,
|
||||
@@ -280,7 +270,6 @@
|
||||
3496ABD21DC2034900C5DDBA /* editor_config_test.cpp */,
|
||||
3496ABD31DC2034900C5DDBA /* editor_notes_test.cpp */,
|
||||
3D052489200F630000F24998 /* feature_matcher_test.cpp */,
|
||||
27FDBF1A2EEEFC3F0045621D /* feature_type_to_osm_test.cpp */,
|
||||
3D05248A200F630000F24998 /* match_by_geometry_test.cpp */,
|
||||
6715560920BEF0A4002BA3B4 /* new_feature_categories_test.cpp */,
|
||||
3496ABD41DC2034900C5DDBA /* opening_hours_ui_test.cpp */,
|
||||
@@ -349,7 +338,6 @@
|
||||
34527C521C89B1770015050E /* editor_config.hpp in Headers */,
|
||||
675B562820D2706000A521D2 /* editable_feature_source.hpp in Headers */,
|
||||
6715565520BF0F87002BA3B4 /* new_feature_categories.hpp in Headers */,
|
||||
27FDBF1F2EEEFC5A0045621D /* feature_type_to_osm.hpp in Headers */,
|
||||
6715560820BEC332002BA3B4 /* edits_migration.hpp in Headers */,
|
||||
3D052487200F62EE00F24998 /* feature_matcher.hpp in Headers */,
|
||||
271DC2172EC60C0C00442D94 /* keys_to_remove.hpp in Headers */,
|
||||
@@ -482,7 +470,6 @@
|
||||
340C20DE1C3E4DFD00111D22 /* osm_auth.cpp in Sources */,
|
||||
6715560720BEC332002BA3B4 /* osm_editor.cpp in Sources */,
|
||||
3D052488200F62EE00F24998 /* feature_matcher.cpp in Sources */,
|
||||
27FDBF1E2EEEFC5A0045621D /* feature_type_to_osm.cpp in Sources */,
|
||||
3D489BEF1D4F67E10052AA38 /* editor_storage.cpp in Sources */,
|
||||
3411387A1C15AE42002E3B3E /* ui2oh.cpp in Sources */,
|
||||
340DC8291C4E71E500EAA2CC /* changeset_wrapper.cpp in Sources */,
|
||||
@@ -501,7 +488,6 @@
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
3496ABE11DC2035800C5DDBA /* config_loader_test.cpp in Sources */,
|
||||
27FDBF1B2EEEFC3F0045621D /* feature_type_to_osm_test.cpp in Sources */,
|
||||
671555E820BDC5D3002BA3B4 /* osm_editor_test.cpp in Sources */,
|
||||
3496ABE21DC2035800C5DDBA /* editor_config_test.cpp in Sources */,
|
||||
FACB76B826B89DF700810C9C /* feature_matcher_test.cpp in Sources */,
|
||||
|
||||