Compare commits
1 Commits
yannikblos
...
release/20
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
36dc41b102 |
@@ -1 +1 @@
|
||||
version: 2025.03.02-7-FDroid+25030207
|
||||
version: 2025.11.07-2-FDroid+25110702
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
package app.organicmaps.background;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.work.Constraints;
|
||||
import androidx.work.ExistingWorkPolicy;
|
||||
import androidx.work.NetworkType;
|
||||
import androidx.work.OneTimeWorkRequest;
|
||||
import androidx.work.OutOfQuotaPolicy;
|
||||
import androidx.work.WorkManager;
|
||||
import androidx.work.Worker;
|
||||
import androidx.work.WorkerParameters;
|
||||
@@ -37,11 +35,7 @@ public class OsmUploadWork extends Worker
|
||||
if (Editor.nativeHasSomethingToUpload() && OsmOAuth.isAuthorized())
|
||||
{
|
||||
final Constraints c = new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build();
|
||||
OneTimeWorkRequest.Builder builder = new OneTimeWorkRequest.Builder(OsmUploadWork.class).setConstraints(c);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||
builder.setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST);
|
||||
}
|
||||
final OneTimeWorkRequest wr = builder.build();
|
||||
final OneTimeWorkRequest wr = new OneTimeWorkRequest.Builder(OsmUploadWork.class).setConstraints(c).build();
|
||||
WorkManager.getInstance(context).beginUniqueWork("UploadOsmChanges", ExistingWorkPolicy.KEEP, wr).enqueue();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,6 @@
|
||||
<string name="type.amenity.bench">Sitzbank</string>
|
||||
<string name="type.amenity.bench.backless">Sitzbank ohne Rückenlehne</string>
|
||||
<string name="type.amenity.bicycle_parking">Fahrradständer</string>
|
||||
<string name="type.amenity.boat_rental">Bootsverleih</string>
|
||||
<string name="type.amenity.bicycle_rental">Fahrradverleih</string>
|
||||
<string name="type.amenity.bicycle_repair_station">Fahrrad-Reparaturstation</string>
|
||||
<string name="type.amenity.brothel">Bordell</string>
|
||||
|
||||
@@ -30,7 +30,6 @@
|
||||
<string name="type.amenity.bench.backless">Backless Bench</string>
|
||||
<string name="type.amenity.bicycle_parking">Bicycle Parking</string>
|
||||
<string name="type.amenity.bicycle_parking.covered">Covered Bicycle Parking</string>
|
||||
<string name="type.amenity.boat_rental">Boat Rental</string>
|
||||
<string name="type.amenity.bicycle_rental">Bicycle Rental</string>
|
||||
<string name="type.amenity.bicycle_repair_station">Bicycle Repair Station</string>
|
||||
<string name="type.amenity.biergarten">Biergarten</string>
|
||||
@@ -93,7 +92,6 @@
|
||||
<string name="type.amenity.loading_dock">Loading Dock</string>
|
||||
<string name="type.amenity.lounger">Lounger</string>
|
||||
<string name="type.amenity.luggage_locker">Luggage Locker</string>
|
||||
<string name="type.amenity.mobile_money_agent">Mobile Money Agent</string>
|
||||
<string name="type.amenity.marketplace">Marketplace</string>
|
||||
<string name="type.amenity.motorcycle_parking">Motorcycle Parking</string>
|
||||
<string name="type.amenity.nightclub">Nightclub</string>
|
||||
@@ -123,7 +121,6 @@
|
||||
<string name="type.amenity.parking_space.private">Parking Space</string>
|
||||
<string name="type.amenity.parking_space.underground">Parking Space</string>
|
||||
<string name="type.amenity.parking_space.disabled">Disabled Parking Space</string>
|
||||
<string name="type.amenity.payment_centre">Payment Centre</string>
|
||||
<string name="type.amenity.payment_terminal">Payment Terminal</string>
|
||||
<string name="type.amenity.pharmacy">Pharmacy</string>
|
||||
<string name="type.amenity.place_of_worship">Place of Worship</string>
|
||||
@@ -660,7 +657,6 @@
|
||||
<string name="type.leisure.miniature_golf">Minigolf</string>
|
||||
<string name="type.leisure.hackerspace">Hackerspace</string>
|
||||
<string name="type.leisure.ice_rink">Ice Rink</string>
|
||||
<string name="type.leisure.indoor_play">Indoor Play Centre</string>
|
||||
<string name="type.leisure.marina">Marina</string>
|
||||
<string name="type.leisure.nature_reserve">Nature Reserve</string>
|
||||
<string name="type.leisure.outdoor_seating">Outdoor Seating</string>
|
||||
@@ -1255,7 +1251,6 @@
|
||||
<string name="type.shop.supermarket">Supermarket</string>
|
||||
<string name="type.shop.tattoo">Tattoo Parlour</string>
|
||||
<string name="type.shop.tea">Tea Shop</string>
|
||||
<string name="type.shop.telecommunication">Telecommunication Shop</string>
|
||||
<string name="type.shop.ticket">Ticket Shop</string>
|
||||
<string name="type.shop.toys">Toy Store</string>
|
||||
<string name="type.shop.travel_agency">Travel Agency</string>
|
||||
|
||||
@@ -62,7 +62,6 @@
|
||||
"shop-laundry": "4Laundry|Laundrette|laundromat",
|
||||
"shop-toys|@category_children|@shop": "Toy|toyshop|kids|toys|kids toys",
|
||||
"amenity-marketplace|@category_food": "3Marketplace|market",
|
||||
"amenity-mobile_money_agent": "Mobile Money Agent|mobile money",
|
||||
"amenity-money_transfer": "Money Transfer",
|
||||
"shop-clothes|@category_shopping|@shop": "3Clothes|U+1F45A|U+1F457|U+1F456|U+1F455|clothing|wear",
|
||||
"shop-caravan|@category_rv|@shop": "2RV dealership|4Caravan dealership|Motorhome dealership",
|
||||
@@ -129,7 +128,6 @@
|
||||
"leisure-garden": "3Garden",
|
||||
"leisure-firepit": "5Firepit",
|
||||
"amenity-bench|amenity-bench-backless": "Bench",
|
||||
"amenity-boat_rental": "4Boat Rental|boat|3rental",
|
||||
"amenity-bicycle_rental": "4Bicycle Rental|cycle|bike|3rental|U+1F6B2|U+1F6B4|U+1F6B5|bicycle hire|bike rental",
|
||||
"amenity-bicycle_repair_station": "4Bicycle Repair Station|cycle|bike|4repair of bicycles",
|
||||
"amenity-car_sharing": "Car Share|3carsharing|car|sharing|U+1F697|U+1F698|U+1F699|carpool|carsharing services|car sharing|4rideshare",
|
||||
@@ -421,7 +419,6 @@
|
||||
"amenity-parking_space-disabled|@category_parking": "Disabled Parking Space",
|
||||
"amenity-nursing_home": "4Nursing Home",
|
||||
"amenity-payment_terminal": "Payment Terminal",
|
||||
"amenity-payment_centre": "Payment Centre",
|
||||
"amenity-public_bath": "Public Bath",
|
||||
"amenity-shower": "Shower",
|
||||
"emergency-assembly_point": "Emergency Assembly Point",
|
||||
@@ -453,7 +450,6 @@
|
||||
"natural-glacier|@category_tourism": "Glacier",
|
||||
"highway-ford": "Ford",
|
||||
"leisure-marina": "3Marina",
|
||||
"leisure-indoor_play": "3Indoor Play Centre|indoor play|indoor playground",
|
||||
"piste:type-downhill|piste:type-nordic": "Skiing|3Ski run|4Piste",
|
||||
"amenity-events_venue": "Events Venue",
|
||||
"shop-chocolate|@category_food|@shop": "Chocolate",
|
||||
@@ -463,7 +459,6 @@
|
||||
"shop-music|@shop": "Record|vinyl|Music",
|
||||
"shop-musical_instrument|@shop": "Musical instruments",
|
||||
"shop-tea|@shop": "Tea",
|
||||
"shop-telecommunication|@shop": "Telecommunication",
|
||||
"shop-antiques|@category_shopping|@shop|@category_secondhand": "Antiques",
|
||||
"shop-art|@category_shopping|@shop": "3Artwork|Arts",
|
||||
"shop-baby_goods|@category_children|@shop": "Baby Goods",
|
||||
|
||||
@@ -258,10 +258,6 @@
|
||||
<include field="outdoor_seating" />
|
||||
<include field="website_menu" />
|
||||
</type>
|
||||
<type id="amenity-boat_rental">
|
||||
<include group="poi_internet" />
|
||||
<include field="operator" />
|
||||
</type>
|
||||
<type id="amenity-bicycle_rental">
|
||||
<include field="website" />
|
||||
<include field="opening_hours" />
|
||||
@@ -1062,9 +1058,6 @@
|
||||
<type id="shop-tea" group="shop">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
<type id="shop-telecommunication" group="shop">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
<type id="shop-trade" group="shop">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
@@ -1133,7 +1126,6 @@
|
||||
<type id="amenity-bench" />
|
||||
<type id="amenity-compressed_air" />
|
||||
<type id="amenity-bbq" />
|
||||
<type id="leisure-slipway" />
|
||||
<type id="amenity-shelter">
|
||||
<include field="name" />
|
||||
</type>
|
||||
@@ -1205,9 +1197,6 @@
|
||||
<type id="amenity-social_facility">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
<type id="amenity-payment_centre">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
<type id="amenity-payment_terminal">
|
||||
<include field="operator" />
|
||||
<include field="level" />
|
||||
@@ -1237,9 +1226,6 @@
|
||||
<type id="amenity-money_transfer">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
<type id="amenity-mobile_money_agent">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
<type id="amenity-vehicle_inspection">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
@@ -1302,9 +1288,6 @@
|
||||
<include group="poi" />
|
||||
<include field="operator" />
|
||||
</type>
|
||||
<type id="leisure-indoor_play">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
<type id="leisure-fitness_centre">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
|
||||
@@ -642,7 +642,7 @@ deprecated|deprecated;519;x
|
||||
sport|diving;520;
|
||||
#~270k uses.
|
||||
man_made|utility_pole;521;
|
||||
amenity|payment_centre;522;
|
||||
deprecated:boundary|administrative|suburb:04.2024;[boundary=administrative][border_type=suburb];x;name;int_name;522;
|
||||
# Generic unspecified barrier, could be node (50k) or way (100k)
|
||||
barrier|yes;523;
|
||||
railway|monorail|tunnel;[railway=monorail][tunnel?];;name;int_name;524;
|
||||
@@ -663,7 +663,7 @@ deprecated|deprecated;538;x
|
||||
railway|funicular|tunnel;[railway=funicular][tunnel?];;name;int_name;539;
|
||||
barrier|cycle_barrier;540;
|
||||
addr:interpolation;[addr:interpolation];;addr:housenumber;name;541;
|
||||
leisure|indoor_play;542;
|
||||
deprecated:amenity|speed_trap:10.2021;542;highway|speed_camera
|
||||
area:highway|track;543;
|
||||
area:highway|primary;544;
|
||||
deprecated|deprecated;545;x
|
||||
@@ -857,7 +857,7 @@ sport|skiing;732;
|
||||
tourism|museum;733;
|
||||
tourism|guest_house;734;
|
||||
tourism|motel;735;
|
||||
shop|telecommunication;736;
|
||||
deprecated:boundary|administrative|4|state:01.2022;[boundary=administrative][admin_level=4][border_type=state];x;name;int_name;736;boundary|administrative|4
|
||||
place|state|USA;[place=state][addr:country=US],[place=state][is_in=USA],[place=state][is_in:country=USA],[place=state][is_in:country_code=us];;name;int_name;737;
|
||||
building|address;[addr:housenumber][addr:street];;addr:housenumber;name;738;
|
||||
amenity|parking|no-access;[amenity=parking][access=not],[amenity=parking][access=no];;name;int_name;739;
|
||||
@@ -980,7 +980,8 @@ railway|rail|tourism|bridge;[railway=rail][usage=tourism][!service][bridge?];;na
|
||||
railway|rail|highspeed|tunnel;[railway=rail][highspeed?][!service][tunnel?];;name;int_name;854;
|
||||
railway|rail|tourism|tunnel;[railway=rail][usage=tourism][!service][tunnel?];;name;int_name;855;
|
||||
mapswithme|grid;856;
|
||||
amenity|mobile_money_agent;857;
|
||||
# service=bus/busway is deprecated in OSM
|
||||
deprecated:highway|service|busway:10.2023;[highway=service][service=busway];x;name;int_name;857;highway|busway
|
||||
highway|busway;[highway=busway],[highway=service][service=busway],[highway=service][service=bus];;name;int_name;858;
|
||||
highway|busway|bridge;[highway=busway][bridge?];;name;int_name;859;
|
||||
highway|busway|tunnel;[highway=busway][tunnel?];;name;int_name;860;
|
||||
@@ -988,7 +989,7 @@ natural|salt_pond;861;landuse|salt_pond
|
||||
amenity|conference_centre;862;
|
||||
amenity|exhibition_centre;863;
|
||||
deprecated:railway|siding|tunnel:06.2023;864;x
|
||||
amenity|boat_rental;865;
|
||||
deprecated:railway|yard|tunnel:06.2023;865;x
|
||||
area:highway|footway;866;
|
||||
junction|circular;867;
|
||||
area:highway|residential;868;
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 7 and column 16.
|
@@ -1 +0,0 @@
|
||||
<svg height="19" viewBox="0 0 19 19" width="19" xmlns="http://www.w3.org/2000/svg"><g fill="none" transform="translate(.3312 .9588)"><circle cx="9" cy="9" fill="#000" opacity=".6" r="9"/><circle cx="9" cy="9" fill="#6B425C" r="8.25"/><path d="m7.44735 6.64155c.6266775 0 1.16175-.4049325 1.36425-.964125h2.49225v.4820625c0 .2651325.21693.4820625.4820625.4820625s.4820625-.21693.4820625-.4820625v-.4820625c.2651325 0 .4820625-.21693.4820625-.4820625s-.21693-.4820625-.4820625-.4820625h-3.456375c-.23139-.6507825-.9063-1.07985-1.65345-.935175-.5640075.1108725-1.02195.5736525-1.132875 1.137675-.16872.9159.530265 1.72575 1.422075 1.72575zm0-1.92825c.2651325 0 .4820625.21693.4820625.4820625s-.21693.4820625-.4820625.4820625-.4820625-.21693-.4820625-.4820625.21693-.4820625.4820625-.4820625zm-1.71484793 7.891702h7.01753543c-.3091683 1-.9781318 1.5-2.0068907 1.5h-3.48081229c-.71478849 0-1.3302781-.5043681-1.47074931-1.2052179zm3.18749793-4.99999999c.89379424.94861026 1.4893498 1.67776089 1.7866668 2.18745192.297317.50969107.6428103 1.28054037 1.03648 2.31254807h-2.62497531c.12331455-.8424798.18497182-1.538368.18497182-2.0876646 0-.54929651-.12771443-1.35340832-.38314331-2.41233539zm-.17685315 1.00499799-2.12 3.495002h2.12z" fill="#000"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 1.2 KiB |
@@ -1 +0,0 @@
|
||||
<svg height="18" viewBox="0 0 18 18" width="18" xmlns="http://www.w3.org/2000/svg"><g fill="none"><circle cx="9" cy="9" fill="#000" opacity=".6" r="9"/><circle cx="9" cy="9" fill="#802D19" r="8.25"/><path d="m4.33219182 13.4602521c-.56625353-.145147-1.05995548-.6661354-1.19210692-1.258018-.08901014-.3987537-.02672993-.8612893.16530454-1.2277241.12702014-.2423618.39770557-.5208347.63150605-.6497263.3295444-.1816314.40961456-.1970143 1.12899472-.2169742.63145117-.0175177.6551594-.0202617.79691486-.0920999.08035554-.04072105.70197217-.49045301 1.3813886-.99942263.67941643-.50894766 1.24429795-.91666337 1.25538374-.90596174.01106385.01065224.01704578.81354355.01328649 1.78426388l-.00683807 1.76489119-1.06258973.792744c-.58441886.4360174-1.1343181.827044-1.22196172.8689725-.32774983.1566993-.47121206.1788709-1.14046468.1762641-.38992905-.0015367-.66223894-.0150646-.74883983-.0372582zm4.82934464-.0252997-.05776137-.0649397v-8.76545977l2.19822491-1.10462793 2.198225 1.11900654v8.77369176l-.0627116.0536399c-.0527947.0451499-.1065663.0536618-.3399057.0536618-.2588862 0-.2815024-.004577-.3423974-.0688966l-.0652031-.0688746v-1.9666855h-2.78928433v1.9824361l-.06148224.0610103c-.05507774.0546497-.09057971.0610103-.34071252.0610103-.25752517 0-.28371947-.005049-.33698616-.0649452zm3.52846524-6.90776623v-1.05221738h-2.78928432v2.10443476h2.78928432z" fill="#000"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 1.3 KiB |
@@ -1 +1 @@
|
||||
<svg height="19" viewBox="0 0 18 19" width="18" xmlns="http://www.w3.org/2000/svg"><g fill="none" transform="translate(0 .9588)"><circle cx="9" cy="9" fill="#000" opacity=".6" r="9"/><circle cx="9" cy="9" fill="#0a6074" r="8.25"/><path d="m14.3284836 9.91216592c-.3125594 1.01096838-.8687086 1.68342498-1.6684475 2.01736998-.1656091-.072627-.3256156-.1651861-.4807525-.2805759-.950475.675-2.27887502.675-3.23467502 0-.950475.675-2.284275.675-3.223875 0-.27744671.2030098-.56714237.3353526-.8659383.4186755-.45689288-.1859843-.80641259-.5898173-.90791437-1.0962377l-.21230169-1.05923188zm-5.78195173-7.54816592.48488347.52149022.44267432.49043051c.84313944.94980132 1.43302404 1.71324441 1.76965374 2.29032927.4488396.76944648.9704078 1.93314626 1.5647046 3.49109933h-3.96274987c.18615974-1.27183553.27923961-2.32237144.27923961-3.15160773s-.19280196-2.04315016-.57840587-3.6417416zm-.26698338 1.51717831v5.27617102h-3.20042235zm5.55269401 9.95882169c-.5724075 0-1.1124-.13-1.62-.4-.9936.54-2.241.54-3.234675 0-.9936.54-2.241.54-3.223875 0-.6642075.3726-1.4256.427-2.16.4v-.88c.7614.027 1.4958-.054 2.16-.54.9396.675 2.2734.675 3.223875 0 .9558.675 2.2842.675 3.234675 0 .6534075.486 1.3932.567 2.1492.54v.88z" fill="#000" fill-rule="evenodd"/></g></svg>
|
||||
<svg height="18" viewBox="0 0 24 24" width="18" xmlns="http://www.w3.org/2000/svg"><g fill="none"><circle cx="12" cy="12" fill="#000" opacity=".6" r="12"/><circle cx="12" cy="12" fill="#0a6074" r="11"/><path d="m5.5116 12.152 5.7601-8.2584v8.2584zm6.8401 0c.97201-2.7.84241-6.3288 0-9 3.4272 1.1088 6.0481 5.328 6.0913 9zm6.1921 2.5776c-.2952.4608-.64081.8568-1.044 1.1952-.46801-.2088-.88561-.5328-1.2168-.8928-1.0728 1.3896-3.24 1.3896-4.3129 0-1.0584 1.3896-3.24 1.3896-4.2985 0-.36.36-.75601.684-1.224.8928-.82081-.6768-1.44-1.6416-1.656-2.6928h14.357c-.1152.54-.3168 1.0368-.60481 1.4976m-.1008 4.2624c-.76321 0-1.4832-.18-2.16-.54-1.3248.72-2.988.72-4.3129 0-1.3248.72-2.988.72-4.2985 0-.88561.4968-1.9008.576-2.88.54v-1.44c1.0152.036 1.9944-.072 2.88-.72 1.2528.9 3.0312.9 4.2985 0 1.2744.9 3.0456.9 4.3129 0 .87121.648 1.8576.756 2.8656.72v1.44z" fill="#000"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 878 B |
@@ -1 +0,0 @@
|
||||
<svg height="26" viewBox="0 0 42 26" width="42" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#999" transform="matrix(.80255481 0 0 .44010193 .471493 3.853665)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#294c88" transform="matrix(.73067099 0 0 .36912143 2.310205 5.333047)"/></svg>
|
||||
|
Before Width: | Height: | Size: 917 B |
@@ -1 +0,0 @@
|
||||
<svg height="19" viewBox="0 0 30 19" width="30" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#999" transform="matrix(.57716453 0 0 .31650328 .236739 2.944845)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#294c88" transform="matrix(.52546863 0 0 .26545702 1.559066 4.008757)"/></svg>
|
||||
|
Before Width: | Height: | Size: 917 B |
@@ -1 +0,0 @@
|
||||
<svg height="26" viewBox="0 0 42 26" width="42" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#999" transform="matrix(.80255481 0 0 .44010193 .471493 3.853665)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#136c30" transform="matrix(.73067099 0 0 .36912143 2.310205 5.333047)"/></svg>
|
||||
|
Before Width: | Height: | Size: 917 B |
@@ -1 +0,0 @@
|
||||
<svg height="19" viewBox="0 0 30 19" width="30" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#999" transform="matrix(.57716453 0 0 .31650328 .236739 2.944845)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#136c30" transform="matrix(.52546863 0 0 .26545702 1.559066 4.008757)"/></svg>
|
||||
|
Before Width: | Height: | Size: 917 B |
@@ -1 +0,0 @@
|
||||
<svg height="26" viewBox="0 0 42 26" width="42" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#999" transform="matrix(.80255481 0 0 .44010193 .471493 3.853665)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#9f1a17" transform="matrix(.73067099 0 0 .36912143 2.310205 5.333047)"/></svg>
|
||||
|
Before Width: | Height: | Size: 917 B |
@@ -1 +0,0 @@
|
||||
<svg height="19" viewBox="0 0 30 19" width="30" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#999" transform="matrix(.57716453 0 0 .31650328 .236739 2.944845)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#9f1a17" transform="matrix(.52546863 0 0 .26545702 1.559066 4.008757)"/></svg>
|
||||
|
Before Width: | Height: | Size: 917 B |
@@ -1 +0,0 @@
|
||||
<svg height="26" viewBox="0 0 42 26" width="42" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#212121" transform="matrix(.80255481 0 0 .44010193 .471493 3.853665)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#9f5a17" transform="matrix(.73067099 0 0 .36912143 2.310205 5.333047)"/></svg>
|
||||
|
Before Width: | Height: | Size: 920 B |
@@ -1 +0,0 @@
|
||||
<svg height="19" viewBox="0 0 30 19" width="30" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#212121" transform="matrix(.57716453 0 0 .31650328 .236739 2.944845)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#9f5a17" transform="matrix(.52546863 0 0 .26545702 1.559066 4.008757)"/></svg>
|
||||
|
Before Width: | Height: | Size: 920 B |
@@ -1 +0,0 @@
|
||||
<svg height="19" viewBox="0 0 19 19" width="19" xmlns="http://www.w3.org/2000/svg"><path d="m2.885 12.0615528 12.23 3.2475375h-12.23zm1.11669573-3.0534098 10.69279887 2.8651268c-.8793687 1.3974981-2.1028262 1.8862358-3.6703724 1.4662131l-5.30380311-1.4211498c-1.08914156-.2918346-1.82105491-1.311646-1.74895082-2.43690057zm6.89827777-6.31723332.3483726.65749533c.7729657 1.48426312 1.2666065 2.61927763 1.4809223 3.40504355.2449323.89801819.4566462 2.21363954.6351416 3.94686404l-3.99974232-1.07172772c.53186611-1.23336117.90993282-2.26853038 1.13420022-3.10550762.2242674-.83697725.3579692-2.11436644.4011056-3.83216758zm-.6797974 1.45913545-1.4269431 5.32542429-3.23029843-.86555585z" fill="#777" transform="translate(.6688 .9588)"/></svg>
|
||||
|
Before Width: | Height: | Size: 741 B |
@@ -1 +0,0 @@
|
||||
<svg height="18" viewBox="0 0 19 18" width="19" xmlns="http://www.w3.org/2000/svg"><path d="m7.33124024 14.0849349.37500187-.5625h-.95625l-1.125 1.6875h.35416688c.37614937 0 .727425-.1879875.93605625-.5009625l.04102537-.0615375h4.08751879l.0410253.0615375c.2086482.312975.5599069.5009625.9360563.5009625h.3541669l-1.125-1.6875h-.95625l.3750018.5625zm.19884375-7.87500002h2.93979371c.90675 0 1.6513875.71656875 1.6862625 1.62264375l.1739082 4.52159997c.0222862.5794951-.3977995 1.073387-.9587146 1.1561005l-.1438562.0119417-4.43342261.0002141c-.579915 0-1.057322-.4387607-1.11839886-1.0024188l-.00576993-.1658206.17390813-4.52160017c.03291306-.8557375.69896291-1.542455 1.53673222-1.61611578zm-.2607975 1.40623031c-.293265 0-.5373225.22532907-.56071125.51766032l-.13678875 1.73235656c0 .31065753.2518425.56250003.5625.56250003l3.75384621-.0004472.0224103-.0013416c.3096732-.0247736.5406244-.2958919.5158519-.60558748l-.135-1.6875c-.0233887-.29233125-.2674406-.51764063-.5607112-.51764063zm.04320281 4.78126971c.3106575 0 .5625-.2518425.5625-.5625s-.2518425-.5625-.5625-.5625-.5625.2518425-.5625.5625.2518425.5625.5625.5625zm3.375 0c.3106575 0 .5625-.2518425.5625-.5625s-.2518425-.5625-.5625-.5625-.5625.2518425-.5625.5625.2518425.5625.5625.5625zm-2.671875-5.62500002c-.07766437 0-.140625.06296062-.140625.140625s.06296063.140625.140625.140625h1.96875003c.07766437 0 .14062497-.06296062.14062497-.140625s-.0629606-.140625-.14062497-.140625zm-4.2392211-1.60024446 5.2236068-2.6118034 5.2236068 2.6118034c.2469892.12349462.3471014.42383114.2236068.67082039s-.4238311.34710142-.6708204.2236068l-4.7763932-2.3882136-4.7763932 2.3882136c-.219546.109773-.48124293.04286902-.62342158-.1468222l-.04739882-.0767846c-.12349462-.24698925-.02338245-.54732577.2236068-.67082039z" fill="#777" transform="translate(.6869)"/></svg>
|
||||
|
Before Width: | Height: | Size: 1.8 KiB |
@@ -844,7 +844,6 @@ node|z17-[amenity=casino],
|
||||
node|z17-[amenity=gambling],
|
||||
node|z17-[leisure=adult_gaming_centre],
|
||||
node|z17-[leisure=amusement_arcade],
|
||||
node|z17-[leisure=indoor_play],
|
||||
node|z17-[amenity=courthouse],
|
||||
node|z17-[amenity=nursing_home],
|
||||
node|z17-[amenity=social_facility],
|
||||
@@ -866,11 +865,9 @@ node|z17-[amenity=vending_machine][vending=parking_tickets],
|
||||
node|z17-[amenity=vending_machine][vending=public_transport_tickets],
|
||||
node|z17-[amenity=payment_terminal],
|
||||
node|z17-[amenity=shower],
|
||||
node|z17-[amenity=slipway],
|
||||
node|z17-[amenity=motorcycle_rental],
|
||||
node|z17-[amenity=bicycle_rental],
|
||||
node|z17-[amenity=bicycle_repair_station],
|
||||
node|z17-[amenity=boat_rental],
|
||||
node|z17-[amenity=post_office],
|
||||
node|z17-[amenity=library],
|
||||
node|z18-[post_office=post_partner],
|
||||
@@ -924,8 +921,6 @@ node|z18-[amenity=toilets],
|
||||
node|z18-[amenity=atm],
|
||||
node|z18-[amenity=bureau_de_change],
|
||||
node|z18-[amenity=money_transfer],
|
||||
node|z18-[amenity=mobile_money_agent],
|
||||
node|z18-[amenity=payment_centre],
|
||||
node|z18-[amenity=waste_disposal],
|
||||
node|z18-[amenity=recycling],
|
||||
node|z16-[amenity=recycling][recycling_type=centre],
|
||||
@@ -1424,9 +1419,6 @@ node|z17-[leisure=amusement_arcade],
|
||||
node|z18-[shop=lottery],
|
||||
{icon-image: lottery-m.svg;}
|
||||
|
||||
node|z17-[leisure=indoor_play],
|
||||
{icon-image: indoor_play-m.svg;icon-min-distance: 20;}
|
||||
|
||||
node|z17-[amenity=courthouse],
|
||||
{icon-image: public-building-m.svg;}
|
||||
|
||||
@@ -1460,9 +1452,6 @@ node|z16-17[building=guardhouse],
|
||||
node|z16-[building=guardhouse]::int_name,
|
||||
{text: none;}
|
||||
|
||||
node|z17-[building=train_station],
|
||||
{icon-image: train_building-m.svg; font-size: 11; text-offset: 1;}
|
||||
|
||||
node|z17-[amenity=prison],
|
||||
{icon-image: prison-m.svg;}
|
||||
node|z18-[amenity=prison],
|
||||
@@ -1481,11 +1470,6 @@ node|z17-[amenity=motorcycle_rental],
|
||||
node|z18-[amenity=motorcycle_rental],
|
||||
{font-size: 11;}
|
||||
|
||||
node|z17-[amenity=boat_rental],
|
||||
{icon-image: boat-rental.svg;}
|
||||
node|z18-[amenity=boat_rental],
|
||||
{font-size: 11;}
|
||||
|
||||
node|z17-[amenity=bicycle_rental],
|
||||
{icon-image: bicycle-rental.svg;}
|
||||
node|z18-[amenity=bicycle_rental],
|
||||
@@ -1554,9 +1538,6 @@ node|z15-[power=plant][plant:source=wind],
|
||||
node|z16-[power=plant][plant:source=wind],
|
||||
{text: name;text-color: @neutral_label;text-halo-radius: 1;text-halo-opacity: 0.9;text-halo-color: @label_halo_light; text-offset: 1; font-size: 10;}
|
||||
|
||||
node|z17-[leisure=slipway],
|
||||
{icon-image: slipway-m.svg;}
|
||||
|
||||
node|z17-[amenity=shower],
|
||||
{icon-image: shower-m.svg;}
|
||||
|
||||
@@ -1581,8 +1562,6 @@ node|z17-[aeroway=gate],
|
||||
|
||||
node|z17-[amenity=bureau_de_change],
|
||||
node|z17-[amenity=money_transfer],
|
||||
node|z17-[amenity=mobile_money_agent],
|
||||
node|z17-[amenity=payment_centre],
|
||||
{icon-image: banknote-m.svg;font-size: 11;}
|
||||
|
||||
node|z16-[amenity=fire_station],
|
||||
@@ -1729,7 +1708,6 @@ node|z16-[shop=laundry],
|
||||
node|z16-[shop=lighting],
|
||||
node|z16-[shop=dry_cleaning],
|
||||
node|z16-[shop=mobile_phone],
|
||||
node|z16-[shop=telecommunication],
|
||||
node|z16-[shop=optician],
|
||||
node|z16-[shop=outdoor],
|
||||
node|z16-[shop=rental],
|
||||
@@ -1896,7 +1874,6 @@ node|z16[shop=laundry],
|
||||
node|z16[shop=dry_cleaning],
|
||||
{icon-image:dry_cleaning-m.svg;}
|
||||
node|z16[shop=mobile_phone],
|
||||
node|z16[shop=telecommunication],
|
||||
{icon-image: mobile_phone-m.svg;}
|
||||
node|z16[shop=optician],
|
||||
{icon-image: optician-m.svg;}
|
||||
@@ -2043,7 +2020,6 @@ node|z17-[shop=laundry],
|
||||
node|z17-[shop=dry_cleaning],
|
||||
{icon-image:dry_cleaning-m.svg;icon-min-distance: 24;}
|
||||
node|z17-[shop=mobile_phone],
|
||||
node|z17-[shop=telecommunication],
|
||||
{icon-image: mobile_phone-m.svg;icon-min-distance: 24;}
|
||||
node|z17-[shop=optician],
|
||||
{icon-image: optician-m.svg;icon-min-distance: 24;}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/* Setting the colors for all POI icons */
|
||||
/* Please add new items so that they fit in the existing alphabetical order */
|
||||
|
||||
node[amenity=boat_rental],
|
||||
node[amenity=car_rental],
|
||||
node[amenity=car_sharing],
|
||||
node[amenity=internet_cafe],
|
||||
@@ -57,7 +56,6 @@ node[leisure=adult_gaming_centre],
|
||||
node[leisure=amusement_arcade],
|
||||
node[leisure=bowling_alley],
|
||||
node[leisure=escape_game],
|
||||
node[leisure=indoor_play],
|
||||
node[shop=bookmaker],
|
||||
node[shop=lottery],
|
||||
node[tourism=aquarium],
|
||||
@@ -120,11 +118,9 @@ node[amenity=fire_station],
|
||||
node[amenity=kindergarten],
|
||||
node[amenity=language_school],
|
||||
node[amenity=library],
|
||||
node[amenity=mobile_money_agent],
|
||||
node[amenity=money_transfer],
|
||||
node[amenity=music_school],
|
||||
node[amenity=nursing_home],
|
||||
node[amenity=payment_centre],
|
||||
node[amenity=police],
|
||||
node[amenity=post_office],
|
||||
node[amenity=prison],
|
||||
|
||||
@@ -400,7 +400,7 @@ building # area z14- (also has captio
|
||||
building-garage # area z14- (also has caption z17-)
|
||||
building-guardhouse # area z14- (also has icon z18-, caption(optional) z18-)
|
||||
building-has_parts # area z14- (also has caption z17-)
|
||||
building-train_station # area z14- (also has icon z17-, caption(optional) z17-)
|
||||
building-train_station # area z14- (also has caption z17-)
|
||||
=== 130
|
||||
|
||||
piste:type-connection # line z15-
|
||||
|
||||
@@ -773,7 +773,6 @@ shop-health_food # icon z16- (also has captio
|
||||
=== 2700
|
||||
|
||||
amenity-bicycle_rental # icon z17- (also has caption(optional) z17-)
|
||||
amenity-boat_rental # icon z17- (also has caption(optional) z17-)
|
||||
amenity-car_sharing # icon z18- (also has caption(optional) z18-)
|
||||
amenity-taxi # icon z16- (also has caption(optional) z16-)
|
||||
=== 2600
|
||||
@@ -867,7 +866,6 @@ shop-shoes # icon z16- (also has captio
|
||||
shop-sports # icon z16- (also has caption(optional) z16-)
|
||||
shop-stationery # icon z16- (also has caption(optional) z16-)
|
||||
shop-tea # icon z18- (also has caption(optional) z18-)
|
||||
shop-telecommunication # icon z16- (also has caption(optional) z16-)
|
||||
shop-toys # icon z16- (also has caption(optional) z16-)
|
||||
shop-travel_agency # icon z18- (also has caption(optional) z18-)
|
||||
shop-wine # icon z16- (also has caption(optional) z16-)
|
||||
@@ -918,7 +916,7 @@ natural-wetland-tidalflat # caption z16- (also has are
|
||||
tourism-picnic_site # icon z16- (also has caption(optional) z16-)
|
||||
=== 1800
|
||||
|
||||
building-train_station # icon z17- (also has caption(optional) z17-, area z14-)
|
||||
building-train_station # caption z17- (also has area z14-)
|
||||
railway-level_crossing # icon z17-
|
||||
=== 1700
|
||||
|
||||
@@ -968,10 +966,8 @@ amenity-childcare # icon z17- (also has captio
|
||||
amenity-doctors # icon z17- (also has caption(optional) z17-, area z15-)
|
||||
amenity-driving_school # icon z17- (also has caption(optional) z17-)
|
||||
amenity-language_school # icon z17- (also has caption(optional) z17-)
|
||||
amenity-mobile_money_agent # icon z17- (also has caption(optional) z18-)
|
||||
amenity-money_transfer # icon z17- (also has caption(optional) z18-)
|
||||
amenity-music_school # icon z17- (also has caption(optional) z17-)
|
||||
amenity-payment_centre # icon z17- (also has caption(optional) z18-)
|
||||
amenity-recycling-centre # icon z16- (also has caption(optional) z16-, area z15-)
|
||||
amenity-veterinary # icon z16- (also has caption(optional) z16-)
|
||||
craft-electrician # icon z17- (also has caption(optional) z18-)
|
||||
@@ -1204,7 +1200,6 @@ healthcare-psychotherapist # icon z17- (also has captio
|
||||
healthcare-speech_therapist # icon z17- (also has caption(optional) z17-)
|
||||
leisure-adult_gaming_centre # icon z17- (also has caption(optional) z17-)
|
||||
leisure-amusement_arcade # icon z17- (also has caption(optional) z17-)
|
||||
leisure-indoor_play # icon z17- (also has caption(optional) z17-)
|
||||
office-company # icon z18- (also has caption(optional) z18-)
|
||||
office-ngo # icon z18- (also has caption(optional) z18-)
|
||||
office-telecommunication # icon z18- (also has caption(optional) z18-)
|
||||
@@ -1321,7 +1316,7 @@ landuse-railway # caption z15- (also has are
|
||||
landuse-residential # caption z17-
|
||||
landuse-retail # caption z16- (also has area z13-)
|
||||
leisure-common # caption z17-
|
||||
leisure-slipway # icon z17- (also has caption(optional) z17-)
|
||||
leisure-slipway # caption z17-
|
||||
leisure-track # caption z16- (also has line z15-)
|
||||
leisure-track-area # caption z16- (also has area z15-)
|
||||
man_made-petroleum_well # icon z17- (also has caption(optional) z18-)
|
||||
@@ -1815,7 +1810,6 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# === -7300
|
||||
|
||||
# amenity-bicycle_rental # caption(optional) z17- (also has icon z17-)
|
||||
# amenity-boat_rental # caption(optional) z17- (also has icon z17-)
|
||||
# amenity-car_sharing # caption(optional) z18- (also has icon z18-)
|
||||
# amenity-taxi # caption(optional) z16- (also has icon z16-)
|
||||
# === -7400
|
||||
@@ -1905,7 +1899,6 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# shop-sports # caption(optional) z16- (also has icon z16-)
|
||||
# shop-stationery # caption(optional) z16- (also has icon z16-)
|
||||
# shop-tea # caption(optional) z18- (also has icon z18-)
|
||||
# shop-telecommunication # caption(optional) z16- (also has icon z16-)
|
||||
# shop-toys # caption(optional) z16- (also has icon z16-)
|
||||
# shop-travel_agency # caption(optional) z18- (also has icon z18-)
|
||||
# shop-wine # caption(optional) z16- (also has icon z16-)
|
||||
@@ -1941,9 +1934,6 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# tourism-picnic_site # caption(optional) z16- (also has icon z16-)
|
||||
# === -8200
|
||||
|
||||
# building-train_station # caption(optional) z17- (also has icon z17-, area z14-)
|
||||
# === -8300
|
||||
|
||||
# leisure-sports_centre-sport-swimming # caption(optional) z15- (also has icon z15-, area z13-)
|
||||
# === -8380
|
||||
|
||||
@@ -1987,10 +1977,8 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# amenity-doctors # caption(optional) z17- (also has icon z17-, area z15-)
|
||||
# amenity-driving_school # caption(optional) z17- (also has icon z17-)
|
||||
# amenity-language_school # caption(optional) z17- (also has icon z17-)
|
||||
# amenity-mobile_money_agent # caption(optional) z18- (also has icon z17-)
|
||||
# amenity-money_transfer # caption(optional) z18- (also has icon z17-)
|
||||
# amenity-music_school # caption(optional) z17- (also has icon z17-)
|
||||
# amenity-payment_centre # caption(optional) z18- (also has icon z17-)
|
||||
# amenity-recycling-centre # caption(optional) z16- (also has icon z16-, area z15-)
|
||||
# amenity-veterinary # caption(optional) z16- (also has icon z16-)
|
||||
# craft-electrician # caption(optional) z18- (also has icon z17-)
|
||||
@@ -2200,7 +2188,6 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# healthcare-speech_therapist # caption(optional) z17- (also has icon z17-)
|
||||
# leisure-adult_gaming_centre # caption(optional) z17- (also has icon z17-)
|
||||
# leisure-amusement_arcade # caption(optional) z17- (also has icon z17-)
|
||||
# leisure-indoor_play # caption(optional) z17- (also has icon z17-)
|
||||
# office-company # caption(optional) z18- (also has icon z18-)
|
||||
# office-ngo # caption(optional) z18- (also has icon z18-)
|
||||
# office-telecommunication # caption(optional) z18- (also has icon z18-)
|
||||
@@ -2291,7 +2278,6 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# landuse-industrial-mine # caption(optional) z15- (also has icon z15-, area z13-)
|
||||
# landuse-landfill # caption(optional) z15- (also has icon z15-, area z13-)
|
||||
# landuse-quarry # caption(optional) z15- (also has icon z15-, area z13-)
|
||||
# leisure-slipway # caption(optional) z17- (also has icon z17-)
|
||||
# man_made-petroleum_well # caption(optional) z18- (also has icon z17-)
|
||||
# power-generator-wind # caption(optional) z18- (also has icon z15-, area z13-)
|
||||
# === -9880
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
<svg height="19" viewBox="0 0 19 19" width="19" xmlns="http://www.w3.org/2000/svg"><g fill="none" transform="translate(.3312 .9588)"><circle cx="9" cy="9" fill="#fff" opacity=".6" r="9"/><circle cx="9" cy="9" fill="#be75a3" r="8.25"/><path d="m7.44735 6.64155c.6266775 0 1.16175-.4049325 1.36425-.964125h2.49225v.4820625c0 .2651325.21693.4820625.4820625.4820625s.4820625-.21693.4820625-.4820625v-.4820625c.2651325 0 .4820625-.21693.4820625-.4820625s-.21693-.4820625-.4820625-.4820625h-3.456375c-.23139-.6507825-.9063-1.07985-1.65345-.935175-.5640075.1108725-1.02195.5736525-1.132875 1.137675-.16872.9159.530265 1.72575 1.422075 1.72575zm0-1.92825c.2651325 0 .4820625.21693.4820625.4820625s-.21693.4820625-.4820625.4820625-.4820625-.21693-.4820625-.4820625.21693-.4820625.4820625-.4820625zm-1.71484793 7.891702h7.01753543c-.3091683 1-.9781318 1.5-2.0068907 1.5h-3.48081229c-.71478849 0-1.3302781-.5043681-1.47074931-1.2052179zm3.18749793-4.99999999c.89379424.94861026 1.4893498 1.67776089 1.7866668 2.18745192.297317.50969107.6428103 1.28054037 1.03648 2.31254807h-2.62497531c.12331455-.8424798.18497182-1.538368.18497182-2.0876646 0-.54929651-.12771443-1.35340832-.38314331-2.41233539zm-.17685315 1.00499799-2.12 3.495002h2.12z" fill="#fff"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 1.2 KiB |
@@ -1 +0,0 @@
|
||||
<svg height="18" viewBox="0 0 18 18" width="18" xmlns="http://www.w3.org/2000/svg"><g fill="none"><circle cx="9" cy="9" fill="#fff" opacity=".6" r="9"/><circle cx="9" cy="9" fill="#eb785d" r="8.25"/><path d="m4.33219182 13.4602521c-.56625353-.145147-1.05995548-.6661354-1.19210692-1.258018-.08901014-.3987537-.02672993-.8612893.16530454-1.2277241.12702014-.2423618.39770557-.5208347.63150605-.6497263.3295444-.1816314.40961456-.1970143 1.12899472-.2169742.63145117-.0175177.6551594-.0202617.79691486-.0920999.08035554-.04072105.70197217-.49045301 1.3813886-.99942263.67941643-.50894766 1.24429795-.91666337 1.25538374-.90596174.01106385.01065224.01704578.81354355.01328649 1.78426388l-.00683807 1.76489119-1.06258973.792744c-.58441886.4360174-1.1343181.827044-1.22196172.8689725-.32774983.1566993-.47121206.1788709-1.14046468.1762641-.38992905-.0015367-.66223894-.0150646-.74883983-.0372582zm4.82934464-.0252997-.05776137-.0649397v-8.76545977l2.19822491-1.10462793 2.198225 1.11900654v8.77369176l-.0627116.0536399c-.0527947.0451499-.1065663.0536618-.3399057.0536618-.2588862 0-.2815024-.004577-.3423974-.0688966l-.0652031-.0688746v-1.9666855h-2.78928433v1.9824361l-.06148224.0610103c-.05507774.0546497-.09057971.0610103-.34071252.0610103-.25752517 0-.28371947-.005049-.33698616-.0649452zm3.52846524-6.90776623v-1.05221738h-2.78928432v2.10443476h2.78928432z" fill="#fff"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 1.3 KiB |
@@ -1 +1 @@
|
||||
<svg height="19" viewBox="0 0 18 19" width="18" xmlns="http://www.w3.org/2000/svg"><g fill="none" transform="translate(0 .9588)"><circle cx="9" cy="9" fill="#fff" opacity=".6" r="9"/><circle cx="9" cy="9" fill="#0797b8" r="8.25"/><path d="m14.3284836 9.91216592c-.3125594 1.01096838-.8687086 1.68342498-1.6684475 2.01736998-.1656091-.072627-.3256156-.1651861-.4807525-.2805759-.950475.675-2.27887502.675-3.23467502 0-.950475.675-2.284275.675-3.223875 0-.27744671.2030098-.56714237.3353526-.8659383.4186755-.45689288-.1859843-.80641259-.5898173-.90791437-1.0962377l-.21230169-1.05923188zm-5.78195173-7.54816592.48488347.52149022.44267432.49043051c.84313944.94980132 1.43302404 1.71324441 1.76965374 2.29032927.4488396.76944648.9704078 1.93314626 1.5647046 3.49109933h-3.96274987c.18615974-1.27183553.27923961-2.32237144.27923961-3.15160773s-.19280196-2.04315016-.57840587-3.6417416zm-.26698338 1.51717831v5.27617102h-3.20042235zm5.55269401 9.95882169c-.5724075 0-1.1124-.13-1.62-.4-.9936.54-2.241.54-3.234675 0-.9936.54-2.241.54-3.223875 0-.6642075.3726-1.4256.427-2.16.4v-.88c.7614.027 1.4958-.054 2.16-.54.9396.675 2.2734.675 3.223875 0 .9558.675 2.2842.675 3.234675 0 .6534075.486 1.3932.567 2.1492.54v.88z" fill="#fff" fill-rule="evenodd"/></g></svg>
|
||||
<svg height="18" viewBox="0 0 24 24" width="18" xmlns="http://www.w3.org/2000/svg"><g fill="none"><circle cx="12" cy="12" fill="#fff" opacity=".6" r="12"/><circle cx="12" cy="12" fill="#0797b8" r="11"/><path d="m5.5116 12.152 5.7601-8.2584v8.2584zm6.8401 0c.97201-2.7.84241-6.3288 0-9 3.4272 1.1088 6.0481 5.328 6.0913 9zm6.1921 2.5776c-.2952.4608-.64081.8568-1.044 1.1952-.46801-.2088-.88561-.5328-1.2168-.8928-1.0728 1.3896-3.24 1.3896-4.3129 0-1.0584 1.3896-3.24 1.3896-4.2985 0-.36.36-.75601.684-1.224.8928-.82081-.6768-1.44-1.6416-1.656-2.6928h14.357c-.1152.54-.3168 1.0368-.60481 1.4976m-.1008 4.2624c-.76321 0-1.4832-.18-2.16-.54-1.3248.72-2.988.72-4.3129 0-1.3248.72-2.988.72-4.2985 0-.88561.4968-1.9008.576-2.88.54v-1.44c1.0152.036 1.9944-.072 2.88-.72 1.2528.9 3.0312.9 4.2985 0 1.2744.9 3.0456.9 4.3129 0 .87121.648 1.8576.756 2.8656.72v1.44z" fill="#fff"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 878 B |
@@ -1 +0,0 @@
|
||||
<svg height="26" viewBox="0 0 42 26" width="42" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#fff" transform="matrix(.80255481 0 0 .44010193 .471493 3.853665)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#1a5ec1" transform="matrix(.73067099 0 0 .36912143 2.310205 5.333047)"/></svg>
|
||||
|
Before Width: | Height: | Size: 917 B |
@@ -1 +0,0 @@
|
||||
<svg height="19" viewBox="0 0 30 19" width="30" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#fff" transform="matrix(.57716453 0 0 .31650328 .236739 2.944845)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#1a5ec1" transform="matrix(.52546863 0 0 .26545702 1.559066 4.008757)"/></svg>
|
||||
|
Before Width: | Height: | Size: 917 B |
@@ -1 +0,0 @@
|
||||
<svg height="26" viewBox="0 0 42 26" width="42" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#fff" transform="matrix(.80255481 0 0 .44010193 .471493 3.853665)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#309302" transform="matrix(.73067099 0 0 .36912143 2.310205 5.333047)"/></svg>
|
||||
|
Before Width: | Height: | Size: 917 B |
@@ -1 +0,0 @@
|
||||
<svg height="19" viewBox="0 0 30 19" width="30" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#fff" transform="matrix(.57716453 0 0 .31650328 .236739 2.944845)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#309302" transform="matrix(.52546863 0 0 .26545702 1.559066 4.008757)"/></svg>
|
||||
|
Before Width: | Height: | Size: 917 B |
@@ -1 +0,0 @@
|
||||
<svg height="26" viewBox="0 0 42 26" width="42" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#fff" transform="matrix(.80255481 0 0 .44010193 .471493 3.853665)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#e63534" transform="matrix(.73067099 0 0 .36912143 2.310205 5.333047)"/></svg>
|
||||
|
Before Width: | Height: | Size: 917 B |
@@ -1 +0,0 @@
|
||||
<svg height="19" viewBox="0 0 30 19" width="30" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#fff" transform="matrix(.57716453 0 0 .31650328 .236739 2.944845)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#e63534" transform="matrix(.52546863 0 0 .26545702 1.559066 4.008757)"/></svg>
|
||||
|
Before Width: | Height: | Size: 917 B |
@@ -1 +0,0 @@
|
||||
<svg height="26" viewBox="0 0 42 26" width="42" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" transform="matrix(.80255481 0 0 .44010193 .471493 3.853665)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#c97600" transform="matrix(.73067099 0 0 .36912143 2.310205 5.333047)"/></svg>
|
||||
|
Before Width: | Height: | Size: 905 B |
@@ -1 +0,0 @@
|
||||
<svg height="19" viewBox="0 0 30 19" width="30" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" transform="matrix(.57716453 0 0 .31650328 .236739 2.944845)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#c97600" transform="matrix(.52546863 0 0 .26545702 1.559066 4.008757)"/></svg>
|
||||
|
Before Width: | Height: | Size: 905 B |
@@ -1 +0,0 @@
|
||||
<svg height="19" viewBox="0 0 19 19" width="19" xmlns="http://www.w3.org/2000/svg"><path d="m2.885 12.0615528 12.23 3.2475375h-12.23zm1.11669573-3.0534098 10.69279887 2.8651268c-.8793687 1.3974981-2.1028262 1.8862358-3.6703724 1.4662131l-5.30380311-1.4211498c-1.08914156-.2918346-1.82105491-1.311646-1.74895082-2.43690057zm6.89827777-6.31723332.3483726.65749533c.7729657 1.48426312 1.2666065 2.61927763 1.4809223 3.40504355.2449323.89801819.4566462 2.21363954.6351416 3.94686404l-3.99974232-1.07172772c.53186611-1.23336117.90993282-2.26853038 1.13420022-3.10550762.2242674-.83697725.3579692-2.11436644.4011056-3.83216758zm-.6797974 1.45913545-1.4269431 5.32542429-3.23029843-.86555585z" fill="#747e86" transform="translate(.6688 .9588)"/></svg>
|
||||
|
Before Width: | Height: | Size: 744 B |
@@ -1 +0,0 @@
|
||||
<svg height="18" viewBox="0 0 19 18" width="19" xmlns="http://www.w3.org/2000/svg"><path d="m7.33124024 14.0849349.37500187-.5625h-.95625l-1.125 1.6875h.35416688c.37614937 0 .727425-.1879875.93605625-.5009625l.04102537-.0615375h4.08751879l.0410253.0615375c.2086482.312975.5599069.5009625.9360563.5009625h.3541669l-1.125-1.6875h-.95625l.3750018.5625zm.19884375-7.87500002h2.93979371c.90675 0 1.6513875.71656875 1.6862625 1.62264375l.1739082 4.52159997c.0222862.5794951-.3977995 1.073387-.9587146 1.1561005l-.1438562.0119417-4.43342261.0002141c-.579915 0-1.057322-.4387607-1.11839886-1.0024188l-.00576993-.1658206.17390813-4.52160017c.03291306-.8557375.69896291-1.542455 1.53673222-1.61611578zm-.2607975 1.40623031c-.293265 0-.5373225.22532907-.56071125.51766032l-.13678875 1.73235656c0 .31065753.2518425.56250003.5625.56250003l3.75384621-.0004472.0224103-.0013416c.3096732-.0247736.5406244-.2958919.5158519-.60558748l-.135-1.6875c-.0233887-.29233125-.2674406-.51764063-.5607112-.51764063zm.04320281 4.78126971c.3106575 0 .5625-.2518425.5625-.5625s-.2518425-.5625-.5625-.5625-.5625.2518425-.5625.5625.2518425.5625.5625.5625zm3.375 0c.3106575 0 .5625-.2518425.5625-.5625s-.2518425-.5625-.5625-.5625-.5625.2518425-.5625.5625.2518425.5625.5625.5625zm-2.671875-5.62500002c-.07766437 0-.140625.06296062-.140625.140625s.06296063.140625.140625.140625h1.96875003c.07766437 0 .14062497-.06296062.14062497-.140625s-.0629606-.140625-.14062497-.140625zm-4.2392211-1.60024446 5.2236068-2.6118034 5.2236068 2.6118034c.2469892.12349462.3471014.42383114.2236068.67082039s-.4238311.34710142-.6708204.2236068l-4.7763932-2.3882136-4.7763932 2.3882136c-.219546.109773-.48124293.04286902-.62342158-.1468222l-.04739882-.0767846c-.12349462-.24698925-.02338245-.54732577.2236068-.67082039z" fill="#747e86" transform="translate(.6869)"/></svg>
|
||||
|
Before Width: | Height: | Size: 1.8 KiB |
@@ -402,7 +402,7 @@ building # area z14- (also has captio
|
||||
building-garage # area z14- (also has caption z17-)
|
||||
building-guardhouse # area z14- (also has icon z16-, caption(optional) z18-)
|
||||
building-has_parts # area z14- (also has caption z17-)
|
||||
building-train_station # area z14- (also has icon z17-, caption(optional) z17-)
|
||||
building-train_station # area z14- (also has caption z17-)
|
||||
=== 130
|
||||
|
||||
piste:type-connection # line z15-
|
||||
|
||||
@@ -773,7 +773,6 @@ shop-health_food # icon z16- (also has captio
|
||||
=== 2700
|
||||
|
||||
amenity-bicycle_rental # icon z17- (also has caption(optional) z17-)
|
||||
amenity-boat_rental # icon z17- (also has caption(optional) z17-)
|
||||
amenity-car_sharing # icon z18- (also has caption(optional) z18-)
|
||||
amenity-taxi # icon z16- (also has caption(optional) z16-)
|
||||
=== 2600
|
||||
@@ -867,7 +866,6 @@ shop-shoes # icon z16- (also has captio
|
||||
shop-sports # icon z16- (also has caption(optional) z16-)
|
||||
shop-stationery # icon z16- (also has caption(optional) z16-)
|
||||
shop-tea # icon z18- (also has caption(optional) z18-)
|
||||
shop-telecommunication # icon z16- (also has caption(optional) z16-)
|
||||
shop-toys # icon z16- (also has caption(optional) z16-)
|
||||
shop-travel_agency # icon z18- (also has caption(optional) z18-)
|
||||
shop-wine # icon z16- (also has caption(optional) z16-)
|
||||
@@ -918,7 +916,7 @@ natural-wetland-tidalflat # caption z16- (also has are
|
||||
tourism-picnic_site # icon z14- (also has caption(optional) z14-)
|
||||
=== 1800
|
||||
|
||||
building-train_station # icon z17- (also has caption(optional) z17-, area z14-)
|
||||
building-train_station # caption z17- (also has area z14-)
|
||||
railway-level_crossing # icon z17-
|
||||
=== 1700
|
||||
|
||||
@@ -968,10 +966,8 @@ amenity-childcare # icon z17- (also has captio
|
||||
amenity-doctors # icon z17- (also has caption(optional) z17-, area z15-)
|
||||
amenity-driving_school # icon z17- (also has caption(optional) z17-)
|
||||
amenity-language_school # icon z17- (also has caption(optional) z17-)
|
||||
amenity-mobile_money_agent # icon z17- (also has caption(optional) z18-)
|
||||
amenity-money_transfer # icon z17- (also has caption(optional) z18-)
|
||||
amenity-music_school # icon z17- (also has caption(optional) z17-)
|
||||
amenity-payment_centre # icon z17- (also has caption(optional) z18-)
|
||||
amenity-recycling-centre # icon z16- (also has caption(optional) z16-, area z15-)
|
||||
amenity-veterinary # icon z16- (also has caption(optional) z16-)
|
||||
craft-electrician # icon z17- (also has caption(optional) z18-)
|
||||
@@ -1205,7 +1201,6 @@ healthcare-psychotherapist # icon z17- (also has captio
|
||||
healthcare-speech_therapist # icon z17- (also has caption(optional) z17-)
|
||||
leisure-adult_gaming_centre # icon z17- (also has caption(optional) z17-)
|
||||
leisure-amusement_arcade # icon z17- (also has caption(optional) z17-)
|
||||
leisure-indoor_play # icon z17- (also has caption(optional) z17-)
|
||||
office-company # icon z18- (also has caption(optional) z18-)
|
||||
office-ngo # icon z18- (also has caption(optional) z18-)
|
||||
office-telecommunication # icon z18- (also has caption(optional) z18-)
|
||||
@@ -1324,7 +1319,7 @@ landuse-railway # caption z15- (also has are
|
||||
landuse-residential # caption z17-
|
||||
landuse-retail # caption z16- (also has area z13-)
|
||||
leisure-common # caption z17-
|
||||
leisure-slipway # icon z17- (also has caption(optional) z17-)
|
||||
leisure-slipway # caption z17-
|
||||
leisure-track # caption z16- (also has line z15-)
|
||||
leisure-track-area # caption z16- (also has area z15-)
|
||||
man_made-petroleum_well # icon z14- (also has caption(optional) z18-)
|
||||
@@ -1818,7 +1813,6 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# === -7300
|
||||
|
||||
# amenity-bicycle_rental # caption(optional) z17- (also has icon z17-)
|
||||
# amenity-boat_rental # caption(optional) z17- (also has icon z17-)
|
||||
# amenity-car_sharing # caption(optional) z18- (also has icon z18-)
|
||||
# amenity-taxi # caption(optional) z16- (also has icon z16-)
|
||||
# === -7400
|
||||
@@ -1908,7 +1902,6 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# shop-sports # caption(optional) z16- (also has icon z16-)
|
||||
# shop-stationery # caption(optional) z16- (also has icon z16-)
|
||||
# shop-tea # caption(optional) z18- (also has icon z18-)
|
||||
# shop-telecommunication # caption(optional) z16- (also has icon z16-)
|
||||
# shop-toys # caption(optional) z16- (also has icon z16-)
|
||||
# shop-travel_agency # caption(optional) z18- (also has icon z18-)
|
||||
# shop-wine # caption(optional) z16- (also has icon z16-)
|
||||
@@ -1944,9 +1937,6 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# tourism-picnic_site # caption(optional) z14- (also has icon z14-)
|
||||
# === -8200
|
||||
|
||||
# building-train_station # caption(optional) z17- (also has icon z17-, area z14-)
|
||||
# === -8300
|
||||
|
||||
# leisure-sports_centre-sport-swimming # caption(optional) z15- (also has icon z15-, area z13-)
|
||||
# === -8380
|
||||
|
||||
@@ -1990,10 +1980,8 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# amenity-doctors # caption(optional) z17- (also has icon z17-, area z15-)
|
||||
# amenity-driving_school # caption(optional) z17- (also has icon z17-)
|
||||
# amenity-language_school # caption(optional) z17- (also has icon z17-)
|
||||
# amenity-mobile_money_agent # caption(optional) z18- (also has icon z17-)
|
||||
# amenity-money_transfer # caption(optional) z18- (also has icon z17-)
|
||||
# amenity-music_school # caption(optional) z17- (also has icon z17-)
|
||||
# amenity-payment_centre # caption(optional) z18- (also has icon z17-)
|
||||
# amenity-recycling-centre # caption(optional) z16- (also has icon z16-, area z15-)
|
||||
# amenity-veterinary # caption(optional) z16- (also has icon z16-)
|
||||
# craft-electrician # caption(optional) z18- (also has icon z17-)
|
||||
@@ -2205,7 +2193,6 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# healthcare-speech_therapist # caption(optional) z17- (also has icon z17-)
|
||||
# leisure-adult_gaming_centre # caption(optional) z17- (also has icon z17-)
|
||||
# leisure-amusement_arcade # caption(optional) z17- (also has icon z17-)
|
||||
# leisure-indoor_play # caption(optional) z17- (also has icon z17-)
|
||||
# office-company # caption(optional) z18- (also has icon z18-)
|
||||
# office-ngo # caption(optional) z18- (also has icon z18-)
|
||||
# office-telecommunication # caption(optional) z18- (also has icon z18-)
|
||||
@@ -2297,7 +2284,6 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# landuse-industrial-mine # caption(optional) z15- (also has icon z15-, area z13-)
|
||||
# landuse-landfill # caption(optional) z15- (also has icon z15-, area z13-)
|
||||
# landuse-quarry # caption(optional) z15- (also has icon z15-, area z13-)
|
||||
# leisure-slipway # caption(optional) z17- (also has icon z17-)
|
||||
# man_made-petroleum_well # caption(optional) z18- (also has icon z14-)
|
||||
# power-generator-wind # caption(optional) z16- (also has icon z13-, area z13-)
|
||||
# === -9880
|
||||
|
||||
@@ -29,7 +29,6 @@ static NSString *didChangeOutdoorMapStyle = @"didChangeOutdoorMapStyle";
|
||||
if (self) {
|
||||
_observers = [NSHashTable weakObjectsHashTable];
|
||||
GetFramework().GetTrafficManager().SetStateListener([self](TrafficManager::TrafficState state) {
|
||||
[NSNotificationCenter.defaultCenter postNotificationName:@"LayersChanged" object:nil];
|
||||
for (id<MWMMapOverlayManagerObserver> observer in self.observers) {
|
||||
if ([observer respondsToSelector:@selector(onTrafficStateUpdated)]) {
|
||||
[observer onTrafficStateUpdated];
|
||||
@@ -37,7 +36,6 @@ static NSString *didChangeOutdoorMapStyle = @"didChangeOutdoorMapStyle";
|
||||
}
|
||||
});
|
||||
GetFramework().GetTransitManager().SetStateListener([self](TransitReadManager::TransitSchemeState state) {
|
||||
[NSNotificationCenter.defaultCenter postNotificationName:@"LayersChanged" object:nil];
|
||||
for (id<MWMMapOverlayManagerObserver> observer in self.observers) {
|
||||
if ([observer respondsToSelector:@selector(onTransitStateUpdated)]) {
|
||||
[observer onTransitStateUpdated];
|
||||
@@ -45,7 +43,6 @@ static NSString *didChangeOutdoorMapStyle = @"didChangeOutdoorMapStyle";
|
||||
}
|
||||
});
|
||||
GetFramework().GetIsolinesManager().SetStateListener([self](IsolinesManager::IsolinesState state) {
|
||||
[NSNotificationCenter.defaultCenter postNotificationName:@"LayersChanged" object:nil];
|
||||
for (id<MWMMapOverlayManagerObserver> observer in self.observers) {
|
||||
if ([observer respondsToSelector:@selector(onIsoLinesStateUpdated)]) {
|
||||
[observer onIsoLinesStateUpdated];
|
||||
@@ -53,7 +50,6 @@ static NSString *didChangeOutdoorMapStyle = @"didChangeOutdoorMapStyle";
|
||||
}
|
||||
});
|
||||
[NSNotificationCenter.defaultCenter addObserverForName:didChangeOutdoorMapStyle object:nil queue:nil usingBlock:^(NSNotification * _Nonnull notification) {
|
||||
[NSNotificationCenter.defaultCenter postNotificationName:@"LayersChanged" object:nil];
|
||||
for (id<MWMMapOverlayManagerObserver> observer in self.observers) {
|
||||
if ([observer respondsToSelector:@selector(onOutdoorStateUpdated)]) {
|
||||
[observer onOutdoorStateUpdated];
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
|
||||
#import <CoreApi/CoreApi.h>
|
||||
|
||||
#import "Controls.h"
|
||||
#import "DeepLinkRouteStrategyAdapter.h"
|
||||
#import "EAGLView.h"
|
||||
#import "FirstSession.h"
|
||||
|
||||
@@ -16,13 +16,6 @@ import UIKit
|
||||
routinOptionsBridgeController.view.backgroundColor = .systemGroupedBackground
|
||||
return routinOptionsBridgeController
|
||||
}
|
||||
|
||||
/// The `ControlsView` for presentation in an alert
|
||||
@objc static func mapControls() -> UIViewController {
|
||||
let controlsBridgeController = UIHostingController(rootView: ControlsView())
|
||||
controlsBridgeController.view.backgroundColor = .clear
|
||||
return controlsBridgeController
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
NS_SWIFT_NAME(Controls)
|
||||
@interface Controls : NSObject
|
||||
|
||||
+ (void)zoomIn;
|
||||
+ (void)zoomOut;
|
||||
+ (void)switchToNextPositionMode;
|
||||
+ (NSString *)positionModeRawValue;
|
||||
+ (Controls *)shared;
|
||||
- (bool)hasMainButtons;
|
||||
|
||||
@end
|
||||
@@ -1,75 +0,0 @@
|
||||
#import "Controls.h"
|
||||
#import "SwiftBridge.h"
|
||||
|
||||
#include <CoreApi/Framework.h>
|
||||
|
||||
@implementation Controls
|
||||
|
||||
static Controls *shared = nil;
|
||||
|
||||
+ (Controls *)shared
|
||||
{
|
||||
if (shared == nil)
|
||||
{
|
||||
shared = [[super allocWithZone:NULL] init];
|
||||
}
|
||||
|
||||
return shared;
|
||||
}
|
||||
|
||||
+ (id)allocWithZone:(NSZone *)zone
|
||||
{
|
||||
return [self shared];
|
||||
}
|
||||
|
||||
- (id)copyWithZone:(NSZone *)zone
|
||||
{
|
||||
return self;
|
||||
}
|
||||
|
||||
- (id)init
|
||||
{
|
||||
self = [super init];
|
||||
if (self != nil)
|
||||
{
|
||||
// Initialize instance variables here
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
+ (void)zoomIn;
|
||||
{
|
||||
GetFramework().Scale(Framework::SCALE_MAG, true);
|
||||
}
|
||||
|
||||
+ (void)zoomOut;
|
||||
{
|
||||
GetFramework().Scale(Framework::SCALE_MIN, true);
|
||||
}
|
||||
|
||||
+ (NSString *)positionModeRawValue;
|
||||
{
|
||||
location::EMyPositionMode mode = GetFramework().GetMyPositionMode();
|
||||
switch (mode)
|
||||
{
|
||||
case location::EMyPositionMode::NotFollowNoPosition: return @"Locate";
|
||||
case location::EMyPositionMode::NotFollow: return @"Locate";
|
||||
case location::EMyPositionMode::PendingPosition: return @"Locating";
|
||||
case location::EMyPositionMode::Follow: return @"Following";
|
||||
case location::EMyPositionMode::FollowAndRotate: return @"FollowingAndRotated";
|
||||
}
|
||||
return @"Locate";
|
||||
}
|
||||
|
||||
+ (void)switchToNextPositionMode;
|
||||
{
|
||||
[MWMLocationManager enableLocationAlert];
|
||||
GetFramework().SwitchMyPositionNextMode();
|
||||
}
|
||||
|
||||
- (bool)hasMainButtons;
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -1,12 +0,0 @@
|
||||
extension Controls {
|
||||
@objc static let changeChangeTrackRecordingNotificationName: Notification.Name = Notification.Name(rawValue: "ChangeTrackRecording")
|
||||
|
||||
/// The notification name for switching position mode
|
||||
@objc static let switchPositionModeNotificationName: Notification.Name = Notification.Name(rawValue: "SwitchPositionMode")
|
||||
|
||||
@objc static let changeVisibilityMainButtonsNotificationName: Notification.Name = Notification.Name(rawValue: "ChangeVisibilityMainButtons")
|
||||
|
||||
static var positionMode: MapPositionButton.Mode {
|
||||
return MapPositionButton.Mode(rawValue: Controls.positionModeRawValue()) ?? .locate
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@
|
||||
#import "MWMNavigationDashboardManager.h"
|
||||
|
||||
@class MapViewController;
|
||||
@class BottomTabBarViewController;
|
||||
@class TrackRecordingButtonViewController;
|
||||
@class SearchQuery;
|
||||
|
||||
@@ -25,7 +26,7 @@ typedef NS_ENUM(NSUInteger, TrackRecordingButtonState) {
|
||||
@property(nonatomic) MWMBottomMenuState menuState;
|
||||
@property(nonatomic) MWMBottomMenuState menuRestoreState;
|
||||
@property(nonatomic) BOOL isDirectionViewHidden;
|
||||
@property(nonatomic) UIViewController * tabBarController;
|
||||
@property(nonatomic) BottomTabBarViewController * tabBarController;
|
||||
@property(nonatomic) TrackRecordingButtonViewController * trackRecordingButton;
|
||||
|
||||
- (instancetype)init __attribute__((unavailable("init is not available")));
|
||||
|
||||
@@ -64,9 +64,6 @@ NSString *const kMapToCategorySelectorSegue = @"MapToCategorySelectorSegue";
|
||||
self.menuRestoreState = MWMBottomMenuStateInactive;
|
||||
self.isAddingPlace = NO;
|
||||
self.searchManager = controller.searchManager;
|
||||
|
||||
[self tabBarController];
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
@@ -223,20 +220,13 @@ NSString *const kMapToCategorySelectorSegue = @"MapToCategorySelectorSegue";
|
||||
return _trafficButton;
|
||||
}
|
||||
|
||||
- (UIViewController *)tabBarController {
|
||||
- (BottomTabBarViewController *)tabBarController {
|
||||
if (!_tabBarController) {
|
||||
MapViewController * ownerController = _ownerController;
|
||||
_tabBarController = [BridgeControllers mapControls];
|
||||
_tabBarController = [BottomTabBarBuilder buildWithMapViewController:ownerController controlsManager:self];
|
||||
[ownerController addChildViewController:_tabBarController];
|
||||
UIView * tabBarViewSuperView = ownerController.controlsView;
|
||||
[tabBarViewSuperView addSubview:_tabBarController.view];
|
||||
_tabBarController.view.translatesAutoresizingMaskIntoConstraints = NO;
|
||||
[NSLayoutConstraint activateConstraints:@[
|
||||
[tabBarViewSuperView.topAnchor constraintEqualToAnchor:_tabBarController.view.topAnchor],
|
||||
[tabBarViewSuperView.leadingAnchor constraintEqualToAnchor:_tabBarController.view.leadingAnchor],
|
||||
[tabBarViewSuperView.bottomAnchor constraintEqualToAnchor:_tabBarController.view.bottomAnchor],
|
||||
[tabBarViewSuperView.trailingAnchor constraintEqualToAnchor:_tabBarController.view.trailingAnchor]
|
||||
]];
|
||||
}
|
||||
|
||||
return _tabBarController;
|
||||
@@ -299,7 +289,7 @@ NSString *const kMapToCategorySelectorSegue = @"MapToCategorySelectorSegue";
|
||||
MapViewController * ownerController = _ownerController;
|
||||
switch (_menuState) {
|
||||
case MWMBottomMenuStateActive:
|
||||
_tabBarController.view.hidden = NO;
|
||||
_tabBarController.isHidden = NO;
|
||||
if (_menuController == nil) {
|
||||
_menuController = [BottomMenuBuilder buildMenuWithMapViewController:ownerController
|
||||
controlsManager:self
|
||||
@@ -308,7 +298,7 @@ NSString *const kMapToCategorySelectorSegue = @"MapToCategorySelectorSegue";
|
||||
}
|
||||
break;
|
||||
case MWMBottomMenuStateLayers:
|
||||
_tabBarController.view.hidden = NO;
|
||||
_tabBarController.isHidden = NO;
|
||||
if (_menuController == nil) {
|
||||
_menuController = [BottomMenuBuilder buildLayersWithMapViewController:ownerController
|
||||
controlsManager:self
|
||||
@@ -317,14 +307,14 @@ NSString *const kMapToCategorySelectorSegue = @"MapToCategorySelectorSegue";
|
||||
}
|
||||
break;
|
||||
case MWMBottomMenuStateInactive:
|
||||
_tabBarController.view.hidden = NO;
|
||||
_tabBarController.isHidden = NO;
|
||||
if (_menuController != nil) {
|
||||
[_menuController dismissViewControllerAnimated:YES completion:nil];
|
||||
_menuController = nil;
|
||||
}
|
||||
break;
|
||||
case MWMBottomMenuStateHidden:
|
||||
_tabBarController.view.hidden = YES;
|
||||
_tabBarController.isHidden = YES;
|
||||
if (_menuController != nil) {
|
||||
[_menuController dismissViewControllerAnimated:YES completion:nil];
|
||||
_menuController = nil;
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23727" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina4_7" orientation="portrait" appearance="light"/>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina4_7" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23721"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
@@ -16,12 +18,12 @@
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WVx-0E-RoH" customClass="MWMButton" propertyAccessControl="all">
|
||||
<rect key="frame" x="0.0" y="0.0" width="56" height="56"/>
|
||||
<viewLayoutGuide key="safeArea" id="iUc-A7-STp"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="layers_button"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="56" id="24f-V4-Vuf"/>
|
||||
<constraint firstAttribute="width" constant="56" id="hko-xz-hRz"/>
|
||||
</constraints>
|
||||
<viewLayoutGuide key="safeArea" id="iUc-A7-STp"/>
|
||||
<state key="normal" image="btn_traffic_on_light"/>
|
||||
<connections>
|
||||
<action selector="buttonTouchUpInside" destination="-1" eventType="touchUpInside" id="fKZ-g8-4ML"/>
|
||||
|
||||
@@ -314,7 +314,7 @@ NSString *const kNavigationControlViewXibName = @"NavigationControlView";
|
||||
[[MapViewController sharedController] updateStatusBarStyle];
|
||||
// Restore bottom buttons only if they were not already hidden by tapping anywhere on an empty map.
|
||||
if (!MWMMapViewControlsManager.manager.hidden)
|
||||
MWMMapViewControlsManager.manager.tabBarController.view.hidden = state != MWMNavigationDashboardStateHidden;
|
||||
BottomTabBarViewController.controller.isHidden = state != MWMNavigationDashboardStateHidden;
|
||||
}
|
||||
|
||||
@synthesize routePreview = _routePreview;
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
|
||||
- (void)performAction:(NSString *_Nonnull)action;
|
||||
|
||||
- (void)openMenu;
|
||||
- (void)openSettings;
|
||||
- (void)openAbout;
|
||||
- (void)openMapsDownloader:(MWMMapDownloaderMode)mode;
|
||||
|
||||
@@ -574,6 +574,10 @@ NSString *const kAboutSegue = @"Map2About";
|
||||
}
|
||||
|
||||
#pragma mark - Open controllers
|
||||
- (void)openMenu {
|
||||
[self.controlsManager.tabBarController onMenuButtonPressed:self];
|
||||
}
|
||||
|
||||
- (void)openSettings {
|
||||
[self performSegueWithIdentifier:kSettingsSegue sender:nil];
|
||||
}
|
||||
@@ -632,7 +636,6 @@ NSString *const kAboutSegue = @"Map2About";
|
||||
self.disableStandbyOnLocationStateMode = YES;
|
||||
break;
|
||||
}
|
||||
[NSNotificationCenter.defaultCenter postNotificationName:Controls.switchPositionModeNotificationName object:nil];
|
||||
}
|
||||
|
||||
#pragma mark - MWMFrameworkDrapeObserver
|
||||
|
||||
@@ -299,8 +299,10 @@ void InitLocalizedStrings() {
|
||||
- (void)updateApplicationIconBadgeNumber {
|
||||
auto const number = [self badgeNumber];
|
||||
|
||||
// Delay init because BottomTabBarViewController.controller is null here.
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[UIApplication.sharedApplication setApplicationIconBadgeNumber:number];
|
||||
BottomTabBarViewController.controller.isApplicationBadgeHidden = (number == 0);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -121,8 +121,8 @@
|
||||
}
|
||||
return true
|
||||
case .menu:
|
||||
// Not supported on iOS.
|
||||
return false
|
||||
MapsAppDelegate.theApp().mapViewController.openMenu()
|
||||
return true
|
||||
case .settings:
|
||||
MapsAppDelegate.theApp().mapViewController.openSettings()
|
||||
return true
|
||||
|
||||
@@ -228,7 +228,6 @@ extension TrackRecordingManager: TrackRecordingObservable {
|
||||
|
||||
@objc
|
||||
private func notifyObservers() {
|
||||
NotificationCenter.default.post(name: Controls.changeChangeTrackRecordingNotificationName, object: nil)
|
||||
observations.removeAll { $0.observer == nil }
|
||||
observations.forEach {
|
||||
$0.recordingStateDidChangeHandler?(recordingState, trackRecordingInfo, { self.trackRecordingElevationProfileData })
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
"type.amenity.bench" = "Sitzbank";
|
||||
"type.amenity.bench.backless" = "Sitzbank ohne Rückenlehne";
|
||||
"type.amenity.bicycle_parking" = "Fahrradständer";
|
||||
"type.amenity.boat_rental" = "Bootsverleih";
|
||||
"type.amenity.bicycle_rental" = "Fahrradverleih";
|
||||
"type.amenity.bicycle_repair_station" = "Fahrrad-Reparaturstation";
|
||||
"type.amenity.biergarten" = "Biergarten";
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
"type.amenity.bench" = "Bench";
|
||||
"type.amenity.bench.backless" = "Backless Bench";
|
||||
"type.amenity.bicycle_parking" = "Bicycle Parking";
|
||||
"type.amenity.boat_rental" = "Boat Rental";
|
||||
"type.amenity.bicycle_rental" = "Bicycle Rental";
|
||||
"type.amenity.bicycle_repair_station" = "Bicycle Repair Station";
|
||||
"type.amenity.biergarten" = "Biergarten";
|
||||
@@ -85,7 +84,6 @@
|
||||
"type.amenity.library" = "Library";
|
||||
"type.amenity.loading_dock" = "Loading Bay";
|
||||
"type.amenity.lounger" = "Lounger";
|
||||
"type.amenity.mobile_money_agent" = "Mobile Money Agent";
|
||||
"type.amenity.marketplace" = "Marketplace";
|
||||
"type.amenity.motorcycle_parking" = "Motorcycle Parking";
|
||||
"type.amenity.nightclub" = "Nightclub";
|
||||
@@ -115,7 +113,6 @@
|
||||
"type.amenity.parking_space.private" = "Parking Space";
|
||||
"type.amenity.parking_space.underground" = "Parking Space";
|
||||
"type.amenity.parking_space.disabled" = "Disabled Parking Space";
|
||||
"type.amenity.payment_centre" = "Payment Centre";
|
||||
"type.amenity.payment_terminal" = "Payment Terminal";
|
||||
"type.amenity.pharmacy" = "Pharmacy";
|
||||
"type.amenity.place_of_worship" = "Place of Worship";
|
||||
@@ -709,7 +706,6 @@
|
||||
"type.leisure.miniature_golf" = "Minigolf";
|
||||
"type.leisure.hackerspace" = "Hackerspace";
|
||||
"type.leisure.ice_rink" = "Ice Rink";
|
||||
"type.leisure.indoor_play" = "Indoor Play Centre";
|
||||
"type.leisure.marina" = "Marina";
|
||||
"type.leisure.nature_reserve" = "Nature Reserve";
|
||||
"type.leisure.outdoor_seating" = "Outdoor Seating";
|
||||
@@ -1310,7 +1306,6 @@
|
||||
"type.shop.supermarket" = "Supermarket";
|
||||
"type.shop.tattoo" = "Tattoo Parlour";
|
||||
"type.shop.tea" = "Tea Shop";
|
||||
"type.shop.telecommunication" = "Telecommunication Shop";
|
||||
"type.shop.ticket" = "Ticket Shop";
|
||||
"type.shop.toys" = "Toy Shop";
|
||||
"type.shop.travel_agency" = "Travel Agency";
|
||||
|
||||
@@ -288,10 +288,6 @@
|
||||
"placepage_distance" = "Distance";
|
||||
"search_show_on_map" = "View on map";
|
||||
|
||||
/* Button title */
|
||||
"zoom_in" = "Zoom In";
|
||||
"zoom_out" = "Zoom Out";
|
||||
|
||||
/* Text in menu */
|
||||
"website" = "Website";
|
||||
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
"type.amenity.bench.backless" = "Backless Bench";
|
||||
"type.amenity.bicycle_parking" = "Bicycle Parking";
|
||||
"type.amenity.bicycle_parking.covered" = "Covered Bicycle Parking";
|
||||
"type.amenity.boat_rental" = "Boat Rental";
|
||||
"type.amenity.bicycle_rental" = "Bicycle Rental";
|
||||
"type.amenity.bicycle_repair_station" = "Bicycle Repair Station";
|
||||
"type.amenity.biergarten" = "Biergarten";
|
||||
@@ -97,7 +96,6 @@
|
||||
"type.amenity.lounger" = "Lounger";
|
||||
"type.amenity.luggage_locker" = "Luggage Locker";
|
||||
"type.amenity.marketplace" = "Marketplace";
|
||||
"type.amenity.mobile_money_agent" = "Mobile Money Agent";
|
||||
"type.amenity.motorcycle_parking" = "Motorcycle Parking";
|
||||
"type.amenity.nightclub" = "Nightclub";
|
||||
"type.amenity.nursing_home" = "Nursing Home";
|
||||
@@ -127,7 +125,6 @@
|
||||
"type.amenity.parking_space.underground" = "Parking Space";
|
||||
"type.amenity.parking_space.disabled" = "Disabled Parking Space";
|
||||
"type.amenity.payment_terminal" = "Payment Terminal";
|
||||
"type.amenity.payment_centre" = "Payment Centre";
|
||||
"type.amenity.pharmacy" = "Pharmacy";
|
||||
"type.amenity.place_of_worship" = "Place of Worship";
|
||||
"type.amenity.place_of_worship.buddhist" = "Buddhist Temple";
|
||||
@@ -739,7 +736,6 @@
|
||||
"type.leisure.miniature_golf" = "Minigolf";
|
||||
"type.leisure.hackerspace" = "Hackerspace";
|
||||
"type.leisure.ice_rink" = "Ice Rink";
|
||||
"type.leisure.indoor_play" = "Indoor Play Centre";
|
||||
"type.leisure.marina" = "Marina";
|
||||
"type.leisure.nature_reserve" = "Nature Reserve";
|
||||
"type.leisure.outdoor_seating" = "Outdoor Seating";
|
||||
@@ -1350,7 +1346,6 @@
|
||||
"type.shop.supermarket" = "Supermarket";
|
||||
"type.shop.tattoo" = "Tattoo Parlour";
|
||||
"type.shop.tea" = "Tea Shop";
|
||||
"type.shop.telecommunication" = "Telecommunication Shop";
|
||||
"type.shop.ticket" = "Ticket Shop";
|
||||
"type.shop.toys" = "Toy Store";
|
||||
"type.shop.travel_agency" = "Travel Agency";
|
||||
|
||||
@@ -30,10 +30,9 @@
|
||||
27697F902E257EDA00FBD913 /* AboutCoMapsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27697F8F2E257ED800FBD913 /* AboutCoMapsView.swift */; };
|
||||
27697F922E257EED00FBD913 /* ApoutOpenStreetMapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27697F912E257EE600FBD913 /* ApoutOpenStreetMapView.swift */; };
|
||||
27768FDB2E20199A0086784A /* RoutingOptionsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27768FD92E20199A0086784A /* RoutingOptionsView.swift */; };
|
||||
27768FE02E201BE60086784A /* LeftButtonType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27768FDF2E201BE60086784A /* LeftButtonType.swift */; };
|
||||
279367562E1BE16300AA5C3D /* Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 279367552E1BE16300AA5C3D /* Settings.swift */; };
|
||||
2793675A2E1BE17300AA5C3D /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 279367592E1BE17300AA5C3D /* SettingsView.swift */; };
|
||||
279387C42E4C8EB7009FDF8B /* MapPositionButtonMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 279387C12E4C8EB6009FDF8B /* MapPositionButtonMode.swift */; };
|
||||
279387C62E4C918A009FDF8B /* Controls.swift in Sources */ = {isa = PBXBuildFile; fileRef = 279387C52E4C9187009FDF8B /* Controls.swift */; };
|
||||
27AF184C2E1D5B2D00CD41E2 /* SettingsNavigationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27AF184B2E1D5A2700CD41E2 /* SettingsNavigationView.swift */; };
|
||||
27AF18502E1DB61600CD41E2 /* VoiceRoutingLanguage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27AF184F2E1DB61500CD41E2 /* VoiceRoutingLanguage.swift */; };
|
||||
27AF18522E1DB62000CD41E2 /* DistanceUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27AF18512E1DB61F00CD41E2 /* DistanceUnit.swift */; };
|
||||
@@ -41,18 +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 */; };
|
||||
27BDA4862E4366AC00C478B8 /* MapLayerButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27BDA4852E4366A600C478B8 /* MapLayerButton.swift */; };
|
||||
27BDA4882E4366C600C478B8 /* MapPositionButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27BDA4872E4366B600C478B8 /* MapPositionButton.swift */; };
|
||||
27BDA48A2E4366F400C478B8 /* MainButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27BDA4892E4366EC00C478B8 /* MainButton.swift */; };
|
||||
27BDA48C2E43670300C478B8 /* MapZoomButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27BDA48B2E4366FB00C478B8 /* MapZoomButton.swift */; };
|
||||
27BDA4902E436A1B00C478B8 /* MapZoomButtonKind.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27BDA48F2E436A1600C478B8 /* MapZoomButtonKind.swift */; };
|
||||
27BDA4A22E436D1900C478B8 /* MainButtonType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27BDA4A12E436D1100C478B8 /* MainButtonType.swift */; };
|
||||
27BDA4A62E437B5200C478B8 /* BottomTabBarButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27BDA4A52E437B5200C478B8 /* BottomTabBarButton.swift */; };
|
||||
27BDA4A82E437F9800C478B8 /* ControlsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27BDA4A72E437F8E00C478B8 /* ControlsView.swift */; };
|
||||
27BDA4AA2E437FEF00C478B8 /* MapTrackRecordingButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27BDA4A92E437FE400C478B8 /* MapTrackRecordingButton.swift */; };
|
||||
27E5CAAD2E4B644100FA3597 /* FloatingButtonStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27E5CAAA2E4B643A00FA3597 /* FloatingButtonStyle.swift */; };
|
||||
27E5CAAF2E4B6CBC00FA3597 /* Controls.h in Sources */ = {isa = PBXBuildFile; fileRef = 27E5CAAE2E4B6CB800FA3597 /* Controls.h */; };
|
||||
27E5CAB12E4B6D0300FA3597 /* Controls.mm in Sources */ = {isa = PBXBuildFile; fileRef = 27E5CAB02E4B6CFC00FA3597 /* Controls.mm */; };
|
||||
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 */; };
|
||||
@@ -128,6 +115,7 @@
|
||||
349A13831DEC138C00C7DB60 /* MWMMobileInternetAlert.m in Sources */ = {isa = PBXBuildFile; fileRef = 349A13801DEC138C00C7DB60 /* MWMMobileInternetAlert.m */; };
|
||||
349A13851DEC138C00C7DB60 /* MWMMobileInternetAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = 349A13811DEC138C00C7DB60 /* MWMMobileInternetAlert.xib */; };
|
||||
349D1AD51E2E325B004A2006 /* BottomMenuItemCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 349D1AC61E2E325B004A2006 /* BottomMenuItemCell.xib */; };
|
||||
349D1AE11E2E325C004A2006 /* BottomTabBarViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 349D1ACD1E2E325B004A2006 /* BottomTabBarViewController.xib */; };
|
||||
349D1CE41E3F836900A878FD /* UIViewController+Hierarchy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 349D1CE21E3F836900A878FD /* UIViewController+Hierarchy.swift */; };
|
||||
34AB39C21D2BD8310021857D /* MWMStopButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 34AB39C01D2BD8310021857D /* MWMStopButton.m */; };
|
||||
34AB66051FC5AA320078E451 /* MWMNavigationDashboardManager+Entity.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34AB65C51FC5AA320078E451 /* MWMNavigationDashboardManager+Entity.mm */; };
|
||||
@@ -338,6 +326,11 @@
|
||||
8C4FB9C72BEFEFF400D44877 /* CarPlayWindowScaleAdjuster.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C4FB9C62BEFEFF400D44877 /* CarPlayWindowScaleAdjuster.swift */; };
|
||||
8CB13C3B2BF1276A004288F2 /* CarplayPlaceholderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CB13C3A2BF1276A004288F2 /* CarplayPlaceholderView.swift */; };
|
||||
99012847243F0D6900C72B10 /* UIViewController+alternative.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99012846243F0D6900C72B10 /* UIViewController+alternative.swift */; };
|
||||
9901284F244732DB00C72B10 /* BottomTabBarPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99012849244732DB00C72B10 /* BottomTabBarPresenter.swift */; };
|
||||
99012851244732DB00C72B10 /* BottomTabBarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9901284B244732DB00C72B10 /* BottomTabBarViewController.swift */; };
|
||||
99012852244732DB00C72B10 /* BottomTabBarBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9901284C244732DB00C72B10 /* BottomTabBarBuilder.swift */; };
|
||||
99012853244732DB00C72B10 /* BottomTabBarInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9901284D244732DB00C72B10 /* BottomTabBarInteractor.swift */; };
|
||||
990128562449A82500C72B10 /* BottomTabBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 990128552449A82400C72B10 /* BottomTabBarView.swift */; };
|
||||
9917D17F2397B1D600A7E06E /* IPadModalPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9917D17E2397B1D600A7E06E /* IPadModalPresentationController.swift */; };
|
||||
991FCA2423B11E61009AD684 /* BookmarksStyleSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 991FCA2323B11E61009AD684 /* BookmarksStyleSheet.swift */; };
|
||||
993DF0B523F6B2EF00AC231A /* PlacePageTrackLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 993DF0B423F6B2EF00AC231A /* PlacePageTrackLayout.swift */; };
|
||||
@@ -486,6 +479,7 @@
|
||||
ED2D74662D1435A600660FBF /* LiveActivityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED2D742D2D14337500660FBF /* LiveActivityManager.swift */; };
|
||||
ED2E328E2D10500900807A08 /* TrackRecordingButtonArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED46DD922D06F804007CACD6 /* TrackRecordingButtonArea.swift */; };
|
||||
ED2E32912D10501700807A08 /* TrackRecordingButtonViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED49D76F2CF0E3A8004AF27E /* TrackRecordingButtonViewController.swift */; };
|
||||
ED3EAC202B03C88100220A4A /* BottomTabBarButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED3EAC1F2B03C88100220A4A /* BottomTabBarButton.swift */; };
|
||||
ED43B8BD2C12063500D07BAA /* DocumentPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED43B8BC2C12063500D07BAA /* DocumentPicker.swift */; };
|
||||
ED46DDCE2D098A0B007CACD6 /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED46DDCD2D098A0B007CACD6 /* WidgetKit.framework */; };
|
||||
ED46DDD02D098A0B007CACD6 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED46DDCF2D098A0B007CACD6 /* SwiftUI.framework */; };
|
||||
@@ -785,10 +779,9 @@
|
||||
27697F8F2E257ED800FBD913 /* AboutCoMapsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutCoMapsView.swift; sourceTree = "<group>"; };
|
||||
27697F912E257EE600FBD913 /* ApoutOpenStreetMapView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApoutOpenStreetMapView.swift; sourceTree = "<group>"; };
|
||||
27768FD92E20199A0086784A /* RoutingOptionsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoutingOptionsView.swift; sourceTree = "<group>"; };
|
||||
27768FDF2E201BE60086784A /* LeftButtonType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LeftButtonType.swift; sourceTree = "<group>"; };
|
||||
279367552E1BE16300AA5C3D /* Settings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Settings.swift; sourceTree = "<group>"; };
|
||||
279367592E1BE17300AA5C3D /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SettingsView.swift; path = UI/Settings/SettingsView.swift; sourceTree = SOURCE_ROOT; };
|
||||
279387C12E4C8EB6009FDF8B /* MapPositionButtonMode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapPositionButtonMode.swift; sourceTree = "<group>"; };
|
||||
279387C52E4C9187009FDF8B /* Controls.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Controls.swift; sourceTree = "<group>"; };
|
||||
27AF184B2E1D5A2700CD41E2 /* SettingsNavigationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsNavigationView.swift; sourceTree = "<group>"; };
|
||||
27AF184F2E1DB61500CD41E2 /* VoiceRoutingLanguage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VoiceRoutingLanguage.swift; sourceTree = "<group>"; };
|
||||
27AF18512E1DB61F00CD41E2 /* DistanceUnit.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DistanceUnit.swift; sourceTree = "<group>"; };
|
||||
@@ -796,18 +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>"; };
|
||||
27BDA4852E4366A600C478B8 /* MapLayerButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapLayerButton.swift; sourceTree = "<group>"; };
|
||||
27BDA4872E4366B600C478B8 /* MapPositionButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapPositionButton.swift; sourceTree = "<group>"; };
|
||||
27BDA4892E4366EC00C478B8 /* MainButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainButton.swift; sourceTree = "<group>"; };
|
||||
27BDA48B2E4366FB00C478B8 /* MapZoomButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapZoomButton.swift; sourceTree = "<group>"; };
|
||||
27BDA48F2E436A1600C478B8 /* MapZoomButtonKind.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapZoomButtonKind.swift; sourceTree = "<group>"; };
|
||||
27BDA4A12E436D1100C478B8 /* MainButtonType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainButtonType.swift; sourceTree = "<group>"; };
|
||||
27BDA4A52E437B5200C478B8 /* BottomTabBarButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BottomTabBarButton.swift; sourceTree = "<group>"; };
|
||||
27BDA4A72E437F8E00C478B8 /* ControlsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ControlsView.swift; sourceTree = "<group>"; };
|
||||
27BDA4A92E437FE400C478B8 /* MapTrackRecordingButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapTrackRecordingButton.swift; sourceTree = "<group>"; };
|
||||
27E5CAAA2E4B643A00FA3597 /* FloatingButtonStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FloatingButtonStyle.swift; sourceTree = "<group>"; };
|
||||
27E5CAAE2E4B6CB800FA3597 /* Controls.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Controls.h; sourceTree = "<group>"; };
|
||||
27E5CAB02E4B6CFC00FA3597 /* Controls.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = Controls.mm; sourceTree = "<group>"; };
|
||||
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>"; };
|
||||
@@ -948,6 +929,7 @@
|
||||
349A35781B53D4C9009677EE /* MWMCircularProgressView.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.c.h; path = MWMCircularProgressView.h; sourceTree = "<group>"; tabWidth = 2; };
|
||||
349A35791B53D4C9009677EE /* MWMCircularProgressView.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.c.objc; path = MWMCircularProgressView.m; sourceTree = "<group>"; tabWidth = 2; };
|
||||
349D1AC61E2E325B004A2006 /* BottomMenuItemCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = BottomMenuItemCell.xib; sourceTree = "<group>"; };
|
||||
349D1ACD1E2E325B004A2006 /* BottomTabBarViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = BottomTabBarViewController.xib; sourceTree = "<group>"; };
|
||||
349D1CE21E3F836900A878FD /* UIViewController+Hierarchy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIViewController+Hierarchy.swift"; sourceTree = "<group>"; };
|
||||
34AB39BF1D2BD8310021857D /* MWMStopButton.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.c.h; path = MWMStopButton.h; sourceTree = "<group>"; tabWidth = 2; };
|
||||
34AB39C01D2BD8310021857D /* MWMStopButton.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.c.objc; path = MWMStopButton.m; sourceTree = "<group>"; tabWidth = 2; };
|
||||
@@ -1236,6 +1218,11 @@
|
||||
978D4A30199A11E600D72CA7 /* faq.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = faq.html; path = ../../data/faq.html; sourceTree = "<group>"; };
|
||||
97A5967E19B9CD47007A963F /* copyright.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = copyright.html; path = ../../data/copyright.html; sourceTree = "<group>"; };
|
||||
99012846243F0D6900C72B10 /* UIViewController+alternative.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIViewController+alternative.swift"; sourceTree = "<group>"; };
|
||||
99012849244732DB00C72B10 /* BottomTabBarPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BottomTabBarPresenter.swift; sourceTree = "<group>"; };
|
||||
9901284B244732DB00C72B10 /* BottomTabBarViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BottomTabBarViewController.swift; sourceTree = "<group>"; };
|
||||
9901284C244732DB00C72B10 /* BottomTabBarBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BottomTabBarBuilder.swift; sourceTree = "<group>"; };
|
||||
9901284D244732DB00C72B10 /* BottomTabBarInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BottomTabBarInteractor.swift; sourceTree = "<group>"; };
|
||||
990128552449A82400C72B10 /* BottomTabBarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BottomTabBarView.swift; sourceTree = "<group>"; };
|
||||
9917D17E2397B1D600A7E06E /* IPadModalPresentationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IPadModalPresentationController.swift; sourceTree = "<group>"; };
|
||||
991FCA2323B11E61009AD684 /* BookmarksStyleSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarksStyleSheet.swift; sourceTree = "<group>"; };
|
||||
993DF0B423F6B2EF00AC231A /* PlacePageTrackLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlacePageTrackLayout.swift; sourceTree = "<group>"; };
|
||||
@@ -1434,6 +1421,7 @@
|
||||
ED2D74352D14337500660FBF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
ED2D74362D14337500660FBF /* CoMapsWidgetExtensionBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoMapsWidgetExtensionBundle.swift; sourceTree = "<group>"; };
|
||||
ED2D745D2D1433DE00660FBF /* TrackRecordingActivityManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrackRecordingActivityManager.swift; sourceTree = "<group>"; };
|
||||
ED3EAC1F2B03C88100220A4A /* BottomTabBarButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BottomTabBarButton.swift; sourceTree = "<group>"; };
|
||||
ED43B8BC2C12063500D07BAA /* DocumentPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DocumentPicker.swift; sourceTree = "<group>"; };
|
||||
ED46DD922D06F804007CACD6 /* TrackRecordingButtonArea.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrackRecordingButtonArea.swift; sourceTree = "<group>"; };
|
||||
ED46DDCC2D098A0B007CACD6 /* CoMapsWidgetExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = CoMapsWidgetExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
@@ -1916,9 +1904,6 @@
|
||||
27697F822E254A9900FBD913 /* EmbeddedSafariView.swift */,
|
||||
27697F842E255B6300FBD913 /* EmbeddedSafariViewCoordinator.swift */,
|
||||
27697F862E255B7C00FBD913 /* EmbeddedSafariViewContent.swift */,
|
||||
27E5CAAE2E4B6CB800FA3597 /* Controls.h */,
|
||||
27E5CAB02E4B6CFC00FA3597 /* Controls.mm */,
|
||||
279387C52E4C9187009FDF8B /* Controls.swift */,
|
||||
);
|
||||
path = Bridging;
|
||||
sourceTree = "<group>";
|
||||
@@ -1978,6 +1963,7 @@
|
||||
2752B6CD2E3121D800887CC4 /* Language.swift */,
|
||||
2752B6C92E31197000887CC4 /* MapLanguage.swift */,
|
||||
27AF184F2E1DB61500CD41E2 /* VoiceRoutingLanguage.swift */,
|
||||
27768FDF2E201BE60086784A /* LeftButtonType.swift */,
|
||||
27AF18512E1DB61F00CD41E2 /* DistanceUnit.swift */,
|
||||
27AF18532E1DB62600CD41E2 /* MobileDataPolicy.swift */,
|
||||
27AF18552E1DB62F00CD41E2 /* PowerSavingMode.swift */,
|
||||
@@ -1987,19 +1973,6 @@
|
||||
path = "Settings Types";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
27BDA4952E436C2D00C478B8 /* New Group */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
27BDA4852E4366A600C478B8 /* MapLayerButton.swift */,
|
||||
27BDA4A92E437FE400C478B8 /* MapTrackRecordingButton.swift */,
|
||||
27BDA4872E4366B600C478B8 /* MapPositionButton.swift */,
|
||||
279387C12E4C8EB6009FDF8B /* MapPositionButtonMode.swift */,
|
||||
27BDA48B2E4366FB00C478B8 /* MapZoomButton.swift */,
|
||||
27BDA48F2E436A1600C478B8 /* MapZoomButtonKind.swift */,
|
||||
);
|
||||
path = "New Group";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97314FDCFA39411CA2CEA /* Maps */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -2532,8 +2505,8 @@
|
||||
children = (
|
||||
99AAEA72244DA59E0039D110 /* Presentation */,
|
||||
998927312449E5ED00260CE2 /* Menu */,
|
||||
99012848244732C200C72B10 /* TabBar */,
|
||||
995F1610244F07F90060631D /* MWMBottomMenuState.h */,
|
||||
27BDA4A52E437B5200C478B8 /* BottomTabBarButton.swift */,
|
||||
);
|
||||
path = BottomMenu;
|
||||
sourceTree = "<group>";
|
||||
@@ -2874,6 +2847,20 @@
|
||||
name = "Custom Views";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
99012848244732C200C72B10 /* TabBar */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
99012849244732DB00C72B10 /* BottomTabBarPresenter.swift */,
|
||||
9901284B244732DB00C72B10 /* BottomTabBarViewController.swift */,
|
||||
9901284C244732DB00C72B10 /* BottomTabBarBuilder.swift */,
|
||||
9901284D244732DB00C72B10 /* BottomTabBarInteractor.swift */,
|
||||
349D1ACD1E2E325B004A2006 /* BottomTabBarViewController.xib */,
|
||||
990128552449A82400C72B10 /* BottomTabBarView.swift */,
|
||||
ED3EAC1F2B03C88100220A4A /* BottomTabBarButton.swift */,
|
||||
);
|
||||
path = TabBar;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
993DF0C223F6BD0600AC231A /* ElevationDetails */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -3596,11 +3583,6 @@
|
||||
F6E2FBFB1E097B9F0083EBEC /* UI */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
27BDA4A72E437F8E00C478B8 /* ControlsView.swift */,
|
||||
27BDA4892E4366EC00C478B8 /* MainButton.swift */,
|
||||
27BDA4A12E436D1100C478B8 /* MainButtonType.swift */,
|
||||
27BDA4952E436C2D00C478B8 /* New Group */,
|
||||
27E5CAAA2E4B643A00FA3597 /* FloatingButtonStyle.swift */,
|
||||
27768FDA2E20199A0086784A /* Routing */,
|
||||
ED9857022C4ECFFC00694F6C /* MailComposer */,
|
||||
ED43B8B92C12061600D07BAA /* DocumentPicker */,
|
||||
@@ -4227,6 +4209,7 @@
|
||||
4761BE2B252D3DB900EE2DE4 /* SubgroupCell.xib in Resources */,
|
||||
99F9A0E72462CA1700AE21E0 /* DownloadAllView.xib in Resources */,
|
||||
349D1AD51E2E325B004A2006 /* BottomMenuItemCell.xib in Resources */,
|
||||
349D1AE11E2E325C004A2006 /* BottomTabBarViewController.xib in Resources */,
|
||||
34D3B01E1E389D05004100F9 /* MWMButtonCell.xib in Resources */,
|
||||
9959C75624582DA2008FD4FD /* DirectionView.xib in Resources */,
|
||||
6741A98B1BF340DE002C974C /* MWMCircularProgress.xib in Resources */,
|
||||
@@ -4365,6 +4348,7 @@
|
||||
34845DB71E166084003D55B9 /* Common.swift in Sources */,
|
||||
47F4F21323A6EC420022FD56 /* DownloadMapsViewController.swift in Sources */,
|
||||
99A906F623FA9C010005872B /* InsetsLabelRenderer.swift in Sources */,
|
||||
99012853244732DB00C72B10 /* BottomTabBarInteractor.swift in Sources */,
|
||||
6741A9A31BF340DE002C974C /* main.mm in Sources */,
|
||||
34D3B04F1E38A20C004100F9 /* Bundle+Init.swift in Sources */,
|
||||
34AB666E1FC5AA330078E451 /* TransportTransitStepsCollectionView.swift in Sources */,
|
||||
@@ -4438,8 +4422,6 @@
|
||||
3D15ACEE2155117000F725D5 /* MWMObjectsCategorySelectorDataSource.mm in Sources */,
|
||||
9977E6A32480F9BF0073780C /* BottomMenuLayerButtonRenderer.swift in Sources */,
|
||||
272F1F392E0EE09000FA52EF /* ExistingProfileView.swift in Sources */,
|
||||
27E5CAAD2E4B644100FA3597 /* FloatingButtonStyle.swift in Sources */,
|
||||
27BDA4862E4366AC00C478B8 /* MapLayerButton.swift in Sources */,
|
||||
3454D7D11E07F045004AF2AD /* UIImage+RGBAData.m in Sources */,
|
||||
6741A9B71BF340DE002C974C /* EAGLView.mm in Sources */,
|
||||
6741A9B81BF340DE002C974C /* MapViewController.mm in Sources */,
|
||||
@@ -4467,7 +4449,6 @@
|
||||
F6E2FEE51E097BA00083EBEC /* MWMSearchNoResults.m in Sources */,
|
||||
ED5E02142D8B17B600A5CC7B /* ModalPresentationStepsController.swift in Sources */,
|
||||
4715273524907F8200E91BBA /* BookmarkColorViewController.swift in Sources */,
|
||||
279387C62E4C918A009FDF8B /* Controls.swift in Sources */,
|
||||
47E3C7292111E614008B3B27 /* FadeInAnimatedTransitioning.swift in Sources */,
|
||||
ED79A5D42BDF8D6100952D1F /* MetadataItem.swift in Sources */,
|
||||
34AB667D1FC5AA330078E451 /* MWMRoutePreview.mm in Sources */,
|
||||
@@ -4491,7 +4472,6 @@
|
||||
F6E2FDA11E097BA00083EBEC /* MWMEditorAdditionalNamesTableViewController.mm in Sources */,
|
||||
4767CDA620AB1F6200BD8166 /* LeftAlignedIconButton.swift in Sources */,
|
||||
3454D7D41E07F045004AF2AD /* UIImageView+Coloring.m in Sources */,
|
||||
27BDA4882E4366C600C478B8 /* MapPositionButton.swift in Sources */,
|
||||
993DF11D23F6BDB100AC231A /* UIToolbarRenderer.swift in Sources */,
|
||||
99A906E923F6F7030005872B /* WikiDescriptionViewController.swift in Sources */,
|
||||
ED79A5D62BDF8D6100952D1F /* CloudDirectoryMonitor.swift in Sources */,
|
||||
@@ -4525,7 +4505,6 @@
|
||||
99C9642B2428C0F700E41723 /* PlacePageHeaderViewController.swift in Sources */,
|
||||
F6FE3C391CC50FFD00A73196 /* MWMPlaceDoesntExistAlert.m in Sources */,
|
||||
F6E2FDFE1E097BA00083EBEC /* MWMOpeningHoursClosedSpanTableViewCell.mm in Sources */,
|
||||
27BDA4A62E437B5200C478B8 /* BottomTabBarButton.swift in Sources */,
|
||||
34B846A12029DCC10081ECCD /* BMCCategoriesHeader.swift in Sources */,
|
||||
99A906F123FA946E0005872B /* DifficultyViewRenderer.swift in Sources */,
|
||||
F6E2FD5F1E097BA00083EBEC /* MWMMapDownloaderLargeCountryTableViewCell.m in Sources */,
|
||||
@@ -4546,6 +4525,7 @@
|
||||
EDB71E002D8B0338004A6A7F /* ModalPresentationAnimator.swift in Sources */,
|
||||
F6E2FD8C1E097BA00083EBEC /* MWMNoMapsView.m in Sources */,
|
||||
34D3B0361E389D05004100F9 /* MWMEditorSelectTableViewCell.m in Sources */,
|
||||
990128562449A82500C72B10 /* BottomTabBarView.swift in Sources */,
|
||||
F6E2FD711E097BA00083EBEC /* MWMMapDownloaderTableViewCell.m in Sources */,
|
||||
F6E2FE4F1E097BA00083EBEC /* MWMActionBarButton.m in Sources */,
|
||||
47F86CFF20C936FC00FEE291 /* TabView.swift in Sources */,
|
||||
@@ -4574,9 +4554,9 @@
|
||||
34AB66081FC5AA320078E451 /* MWMNavigationDashboardManager.mm in Sources */,
|
||||
3404F490202898CC0090E401 /* BMCModels.swift in Sources */,
|
||||
F6E2FD561E097BA00083EBEC /* MWMMapDownloaderButtonTableViewCell.m in Sources */,
|
||||
9901284F244732DB00C72B10 /* BottomTabBarPresenter.swift in Sources */,
|
||||
CDB4D5002231412900104869 /* MapTemplateBuilder.swift in Sources */,
|
||||
34AB66171FC5AA320078E451 /* MWMiPhoneRoutePreview.m in Sources */,
|
||||
27BDA4A82E437F9800C478B8 /* ControlsView.swift in Sources */,
|
||||
99A906EA23F6F7030005872B /* PlacePageInfoViewController.swift in Sources */,
|
||||
993DF11723F6BDB100AC231A /* UINavigationBarRenderer.swift in Sources */,
|
||||
6741A9E71BF340DE002C974C /* MWMCircularProgressView.m in Sources */,
|
||||
@@ -4627,9 +4607,8 @@
|
||||
34AB66111FC5AA320078E451 /* NavigationTurnsView.swift in Sources */,
|
||||
475ED78624C7C7300063ADC7 /* ValueStepperViewRenderer.swift in Sources */,
|
||||
3490D2E11CE9DD2500D0B838 /* MWMSideButtonsView.mm in Sources */,
|
||||
27BDA4AA2E437FEF00C478B8 /* MapTrackRecordingButton.swift in Sources */,
|
||||
279387C42E4C8EB7009FDF8B /* MapPositionButtonMode.swift in Sources */,
|
||||
47F4F21523A6F06F0022FD56 /* AvailableMapsDataSource.swift in Sources */,
|
||||
99012852244732DB00C72B10 /* BottomTabBarBuilder.swift in Sources */,
|
||||
99012847243F0D6900C72B10 /* UIViewController+alternative.swift in Sources */,
|
||||
995739062355CAC40019AEE7 /* ImageViewCrossDisolve.swift in Sources */,
|
||||
ED83880F2D54DEB3002A0536 /* UIImage+FilledWithColor.swift in Sources */,
|
||||
@@ -4637,7 +4616,6 @@
|
||||
47A13CAD24BE9AA500027D4F /* DatePickerViewRenderer.swift in Sources */,
|
||||
ED2E328E2D10500900807A08 /* TrackRecordingButtonArea.swift in Sources */,
|
||||
F6E2FE7C1E097BA00083EBEC /* MWMPlacePageOpeningHoursCell.mm in Sources */,
|
||||
27BDA48C2E43670300C478B8 /* MapZoomButton.swift in Sources */,
|
||||
340E1EFB1E2F614400CE49BF /* Storyboard.swift in Sources */,
|
||||
34E776331F15FAC2003040B3 /* MWMPlacePageManagerHelper.mm in Sources */,
|
||||
462452E92BD052C0004C85E1 /* MWMEditorSegmentedTableViewCell.mm in Sources */,
|
||||
@@ -4669,7 +4647,6 @@
|
||||
F6E2FE821E097BA00083EBEC /* MWMPlacePageOpeningHoursDayView.m in Sources */,
|
||||
F6E2FD6B1E097BA00083EBEC /* MWMMapDownloaderSubplaceTableViewCell.m in Sources */,
|
||||
CDCA27842245090900167D87 /* ListenerContainer.swift in Sources */,
|
||||
27E5CAAF2E4B6CBC00FA3597 /* Controls.h in Sources */,
|
||||
27AF18582E1DB63A00CD41E2 /* Appearance.swift in Sources */,
|
||||
47E3C7252111E41B008B3B27 /* DimmedModalPresentationController.swift in Sources */,
|
||||
3472B5CB200F43EF00DC6CD5 /* BackgroundFetchScheduler.swift in Sources */,
|
||||
@@ -4748,12 +4725,12 @@
|
||||
270C9C282E16AB6F00ABA688 /* Profile.swift in Sources */,
|
||||
ED9857082C4ED02D00694F6C /* MailComposer.swift in Sources */,
|
||||
99F8B4C623B644A6009FF0B4 /* MapStyleSheet.swift in Sources */,
|
||||
99012851244732DB00C72B10 /* BottomTabBarViewController.swift in Sources */,
|
||||
993DF10623F6BDB100AC231A /* UIColor+rgba.swift in Sources */,
|
||||
EDC3573B2B7B5029001AE9CA /* CALayer+SetCorner.swift in Sources */,
|
||||
ED914AB22D35063A00973C45 /* TextColorStyleSheet.swift in Sources */,
|
||||
47E3C7332111F4D8008B3B27 /* CoverVerticalDismissalAnimator.swift in Sources */,
|
||||
471AB99423ABA3BD00F56D49 /* SearchMapsDataSource.swift in Sources */,
|
||||
27BDA4A22E436D1900C478B8 /* MainButtonType.swift in Sources */,
|
||||
47CA68F1250B54AF00671019 /* BookmarksListCell.swift in Sources */,
|
||||
471A7BC02481C82500A0D4C1 /* BookmarkTitleCell.swift in Sources */,
|
||||
47F67D1521CAB21B0069754E /* MWMImageCoder.m in Sources */,
|
||||
@@ -4786,6 +4763,7 @@
|
||||
471A7BBE2481A3D000A0D4C1 /* EditBookmarkViewController.swift in Sources */,
|
||||
993DF0C923F6BD0600AC231A /* ElevationDetailsBuilder.swift in Sources */,
|
||||
674A7E301C0DB10B003D48E1 /* MWMMapWidgets.mm in Sources */,
|
||||
27768FE02E201BE60086784A /* LeftButtonType.swift in Sources */,
|
||||
34AB66291FC5AA330078E451 /* RouteManagerViewController.swift in Sources */,
|
||||
3404754D1E081A4600C92850 /* MWMKeyboard.m in Sources */,
|
||||
993DF10C23F6BDB100AC231A /* MWMTableViewCellRenderer.swift in Sources */,
|
||||
@@ -4795,12 +4773,11 @@
|
||||
47E3C7312111F4C2008B3B27 /* CoverVerticalPresentationAnimator.swift in Sources */,
|
||||
99E2B0122368A8C700FFABC5 /* MWMCategory+PlacesCountTitle.swift in Sources */,
|
||||
F6D67CDC2062B9C00032FD38 /* BCCreateCategoryAlert.swift in Sources */,
|
||||
27E5CAB12E4B6D0300FA3597 /* Controls.mm in Sources */,
|
||||
F6E2FE2B1E097BA00083EBEC /* MWMStreetEditorEditTableViewCell.m in Sources */,
|
||||
34AB66891FC5AA330078E451 /* NavigationControlView.swift in Sources */,
|
||||
27BDA48A2E4366F400C478B8 /* MainButton.swift in Sources */,
|
||||
479EE94A2292FB03009DEBA6 /* ActivityIndicator.swift in Sources */,
|
||||
27697F872E255B8500FBD913 /* EmbeddedSafariViewContent.swift in Sources */,
|
||||
ED3EAC202B03C88100220A4A /* BottomTabBarButton.swift in Sources */,
|
||||
47B9065321C7FA400079C85E /* MWMImageCache.m in Sources */,
|
||||
F6FEA82E1C58F108007223CC /* MWMButton.m in Sources */,
|
||||
34B924431DC8A29C0008D971 /* MWMMailViewController.m in Sources */,
|
||||
@@ -4830,7 +4807,6 @@
|
||||
F6A2184A1CA3F26800BE2CC6 /* MWMEditorViralActivityItem.mm in Sources */,
|
||||
993DF10923F6BDB100AC231A /* IFonts.swift in Sources */,
|
||||
47699A0821F08E37009E6585 /* NSDate+TimeDistance.m in Sources */,
|
||||
27BDA4902E436A1B00C478B8 /* MapZoomButtonKind.swift in Sources */,
|
||||
34845DB31E165E24003D55B9 /* SearchNoResultsViewController.swift in Sources */,
|
||||
47E3C72B2111E62A008B3B27 /* FadeOutAnimatedTransitioning.swift in Sources */,
|
||||
471A7BC4248471BE00A0D4C1 /* BookmarkUIUtils.swift in Sources */,
|
||||
|
||||
52
iphone/Maps/Model/Settings Types/LeftButtonType.swift
Normal file
@@ -0,0 +1,52 @@
|
||||
extension Settings {
|
||||
/// The type of the left bottom bar button
|
||||
enum LeftButtonType: String, Codable, CaseIterable, Identifiable {
|
||||
case hidden = "Hidden"
|
||||
case addPlace = "AddPlace"
|
||||
case recordTrack = "RecordTrack"
|
||||
case settings = "Settings"
|
||||
case help = "Help"
|
||||
|
||||
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
/// The id
|
||||
var id: Self { self }
|
||||
|
||||
|
||||
/// The description text
|
||||
var description: String {
|
||||
switch self {
|
||||
case .hidden:
|
||||
return String(localized: "disabled")
|
||||
case .addPlace:
|
||||
return String(localized: "placepage_add_place_button")
|
||||
case .recordTrack:
|
||||
return String(localized: "start_track_recording")
|
||||
case .settings:
|
||||
return String(localized: "settings")
|
||||
case .help:
|
||||
return String(localized: "help")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// The image
|
||||
var image: UIImage {
|
||||
let configuration = UIImage.SymbolConfiguration(pointSize: 24, weight: .semibold)
|
||||
switch self {
|
||||
case .addPlace:
|
||||
return UIImage(systemName: "plus", withConfiguration: configuration)!
|
||||
case .recordTrack:
|
||||
return UIImage(named: "track", in: nil, with: configuration)!
|
||||
case .settings:
|
||||
return UIImage(systemName: "gearshape.fill", withConfiguration: UIImage.SymbolConfiguration(pointSize: 22, weight: .semibold))!
|
||||
case .help:
|
||||
return UIImage(systemName: "info.circle", withConfiguration: configuration)!
|
||||
default:
|
||||
return UIImage()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,7 +14,7 @@ import AVFoundation
|
||||
|
||||
|
||||
/// Key for storing the type of action used for the bottom left main interface button in the user defaults
|
||||
static private let userDefaultsKeyLeftMainButtonKind = "LeftMainButtonKind"
|
||||
static private let userDefaultsKeyLeftButtonType = "LeftButtonType"
|
||||
|
||||
|
||||
/// Key for storing the map appearance in the user defaults
|
||||
@@ -52,16 +52,16 @@ import AVFoundation
|
||||
|
||||
|
||||
/// The type of action used for the bottom left main interface button
|
||||
static var leftMainButtonKind: MainButton.Kind {
|
||||
static var leftButtonType: LeftButtonType {
|
||||
get {
|
||||
if let leftMainButtonKindRawValue = UserDefaults.standard.string(forKey: userDefaultsKeyLeftMainButtonKind), let leftMainButtonKind = MainButton.Kind(rawValue: leftMainButtonKindRawValue) {
|
||||
return leftMainButtonKind
|
||||
if let leftButtonTypeRawValue = UserDefaults.standard.string(forKey: userDefaultsKeyLeftButtonType), let leftButtonType = LeftButtonType(rawValue: leftButtonTypeRawValue) {
|
||||
return leftButtonType
|
||||
}
|
||||
|
||||
return .help
|
||||
}
|
||||
set {
|
||||
UserDefaults.standard.set(newValue.rawValue, forKey: userDefaultsKeyLeftMainButtonKind)
|
||||
UserDefaults.standard.set(newValue.rawValue, forKey: userDefaultsKeyLeftButtonType)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,10 @@ final class TabBarArea: AvailableArea {
|
||||
let directions = ov.tabBarAreaAffectDirections
|
||||
addConstraints(otherView: ov, directions: directions)
|
||||
}
|
||||
|
||||
override func notifyObserver() {
|
||||
BottomTabBarViewController.updateAvailableArea(areaFrame)
|
||||
}
|
||||
}
|
||||
|
||||
extension UIView {
|
||||
|
||||
@@ -78,17 +78,17 @@ extension BottomMenuPresenter {
|
||||
case .layers:
|
||||
return 1
|
||||
case .items:
|
||||
let leftMainButtonKind = Settings.leftMainButtonKind
|
||||
let leftButtonType = Settings.leftButtonType
|
||||
menuCells = CellType.allCases.filter { cell in
|
||||
if cell == .donate {
|
||||
return false
|
||||
} else if leftMainButtonKind == .addPlace, cell == .addPlace {
|
||||
} else if leftButtonType == .addPlace, cell == .addPlace {
|
||||
return false
|
||||
} else if leftMainButtonKind == .recordTrack, cell == .recordTrack {
|
||||
} else if leftButtonType == .recordTrack, cell == .recordTrack {
|
||||
return false
|
||||
} else if leftMainButtonKind == .help, cell == .help {
|
||||
} else if leftButtonType == .help, cell == .help {
|
||||
return false
|
||||
} else if leftMainButtonKind == .settings, cell == .settings {
|
||||
} else if leftButtonType == .settings, cell == .settings {
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
14
iphone/Maps/UI/BottomMenu/TabBar/BottomTabBarBuilder.swift
Normal file
@@ -0,0 +1,14 @@
|
||||
@objc class BottomTabBarBuilder: NSObject {
|
||||
@objc static func build(mapViewController: MapViewController, controlsManager: MWMMapViewControlsManager) -> BottomTabBarViewController {
|
||||
let viewController = BottomTabBarViewController(nibName: nil, bundle: nil)
|
||||
let interactor = BottomTabBarInteractor(viewController: viewController,
|
||||
mapViewController: mapViewController,
|
||||
controlsManager: controlsManager)
|
||||
let presenter = BottomTabBarPresenter(interactor: interactor)
|
||||
|
||||
interactor.presenter = presenter
|
||||
viewController.presenter = presenter
|
||||
|
||||
return viewController
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,6 @@
|
||||
import UIKit
|
||||
|
||||
class BottomTabBarButton: MWMButton {
|
||||
let kExtendedTabBarTappableMargin: CGFloat = -15
|
||||
|
||||
@objc override func applyTheme() {
|
||||
if styleName.isEmpty {
|
||||
setStyle(.bottomTabBarButton)
|
||||
@@ -0,0 +1,75 @@
|
||||
protocol BottomTabBarInteractorProtocol: AnyObject {
|
||||
func openSearch()
|
||||
func openLeftButton()
|
||||
func openBookmarks()
|
||||
func openMenu()
|
||||
}
|
||||
|
||||
class BottomTabBarInteractor {
|
||||
weak var presenter: BottomTabBarPresenterProtocol?
|
||||
private weak var viewController: UIViewController?
|
||||
private weak var mapViewController: MapViewController?
|
||||
private weak var controlsManager: MWMMapViewControlsManager?
|
||||
private let searchManager: SearchOnMapManager
|
||||
|
||||
init(viewController: UIViewController, mapViewController: MapViewController, controlsManager: MWMMapViewControlsManager) {
|
||||
self.viewController = viewController
|
||||
self.mapViewController = mapViewController
|
||||
self.controlsManager = controlsManager
|
||||
self.searchManager = mapViewController.searchManager
|
||||
}
|
||||
}
|
||||
|
||||
extension BottomTabBarInteractor: BottomTabBarInteractorProtocol {
|
||||
func openSearch() {
|
||||
searchManager.isSearching ? searchManager.close() : searchManager.startSearching(isRouting: false)
|
||||
}
|
||||
|
||||
func openLeftButton() {
|
||||
switch Settings.leftButtonType {
|
||||
case .addPlace:
|
||||
if let delegate = controlsManager as? BottomMenuDelegate {
|
||||
delegate.addPlace()
|
||||
}
|
||||
case .settings:
|
||||
mapViewController?.openSettings()
|
||||
case .recordTrack:
|
||||
let mapViewController = MapViewController.shared()!
|
||||
let trackRecorder: TrackRecordingManager = .shared
|
||||
switch trackRecorder.recordingState {
|
||||
case .active:
|
||||
mapViewController.showTrackRecordingPlacePage()
|
||||
case .inactive:
|
||||
trackRecorder.start { result in
|
||||
switch result {
|
||||
case .success:
|
||||
mapViewController.showTrackRecordingPlacePage()
|
||||
case .failure:
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
default:
|
||||
mapViewController?.openAbout()
|
||||
}
|
||||
}
|
||||
|
||||
func openBookmarks() {
|
||||
mapViewController?.bookmarksCoordinator.open()
|
||||
}
|
||||
|
||||
func openMenu() {
|
||||
guard let state = controlsManager?.menuState else {
|
||||
fatalError("ERROR: Failed to retrieve the current MapViewControlsManager's state.")
|
||||
}
|
||||
switch state {
|
||||
case .inactive: controlsManager?.menuState = .active
|
||||
case .active: controlsManager?.menuState = .inactive
|
||||
case .hidden:
|
||||
// When the current controls manager's state is hidden, accidental taps on the menu button during the hiding animation should be skipped.
|
||||
break;
|
||||
case .layers: fallthrough
|
||||
@unknown default: fatalError("ERROR: Unexpected MapViewControlsManager's state: \(state)")
|
||||
}
|
||||
}
|
||||
}
|
||||
37
iphone/Maps/UI/BottomMenu/TabBar/BottomTabBarPresenter.swift
Normal file
@@ -0,0 +1,37 @@
|
||||
protocol BottomTabBarPresenterProtocol: AnyObject {
|
||||
func configure()
|
||||
func onLeftButtonPressed()
|
||||
func onSearchButtonPressed()
|
||||
func onBookmarksButtonPressed()
|
||||
func onMenuButtonPressed()
|
||||
}
|
||||
|
||||
class BottomTabBarPresenter: NSObject {
|
||||
private let interactor: BottomTabBarInteractorProtocol
|
||||
|
||||
init(interactor: BottomTabBarInteractorProtocol) {
|
||||
self.interactor = interactor
|
||||
}
|
||||
}
|
||||
|
||||
extension BottomTabBarPresenter: BottomTabBarPresenterProtocol {
|
||||
func configure() {
|
||||
}
|
||||
|
||||
func onLeftButtonPressed() {
|
||||
interactor.openLeftButton()
|
||||
}
|
||||
|
||||
func onSearchButtonPressed() {
|
||||
interactor.openSearch()
|
||||
}
|
||||
|
||||
func onBookmarksButtonPressed() {
|
||||
interactor.openBookmarks()
|
||||
}
|
||||
|
||||
func onMenuButtonPressed() {
|
||||
interactor.openMenu()
|
||||
}
|
||||
}
|
||||
|
||||
28
iphone/Maps/UI/BottomMenu/TabBar/BottomTabBarView.swift
Normal file
@@ -0,0 +1,28 @@
|
||||
let kExtendedTabBarTappableMargin: CGFloat = -15
|
||||
|
||||
final class BottomTabBarView: SolidTouchView {
|
||||
|
||||
@IBOutlet var mainButtonsView: ExtendedBottomTabBarContainerView!
|
||||
|
||||
override var placePageAreaAffectDirections: MWMAvailableAreaAffectDirections {
|
||||
return alternative(iPhone: [], iPad: [.bottom])
|
||||
}
|
||||
|
||||
override var widgetsAreaAffectDirections: MWMAvailableAreaAffectDirections {
|
||||
return [.bottom]
|
||||
}
|
||||
|
||||
override var sideButtonsAreaAffectDirections: MWMAvailableAreaAffectDirections {
|
||||
return [.bottom]
|
||||
}
|
||||
|
||||
override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
|
||||
return bounds.insetBy(dx: kExtendedTabBarTappableMargin, dy: kExtendedTabBarTappableMargin).contains(point)
|
||||
}
|
||||
}
|
||||
|
||||
final class ExtendedBottomTabBarContainerView: UIView {
|
||||
override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
|
||||
return bounds.insetBy(dx: kExtendedTabBarTappableMargin, dy: kExtendedTabBarTappableMargin).contains(point)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,131 @@
|
||||
|
||||
class BottomTabBarViewController: UIViewController {
|
||||
var presenter: BottomTabBarPresenterProtocol!
|
||||
|
||||
@IBOutlet var leftButton: MWMButton?
|
||||
@IBOutlet var searchButton: MWMButton?
|
||||
@IBOutlet var searchConstraintWithLeftButton: NSLayoutConstraint?
|
||||
@IBOutlet var searchConstraintWithoutLeftButton: NSLayoutConstraint?
|
||||
@IBOutlet var bookmarksButton: MWMButton?
|
||||
@IBOutlet var bookmarksConstraintWithLeftButton: NSLayoutConstraint?
|
||||
@IBOutlet var bookmarksConstraintWithoutLeftButton: NSLayoutConstraint?
|
||||
@IBOutlet var moreButton: MWMButton?
|
||||
@IBOutlet var downloadBadge: UIView?
|
||||
|
||||
private var avaliableArea = CGRect.zero
|
||||
@objc var isHidden: Bool = false {
|
||||
didSet {
|
||||
updateFrame(animated: true)
|
||||
}
|
||||
}
|
||||
@objc var isApplicationBadgeHidden: Bool = true {
|
||||
didSet {
|
||||
updateBadge()
|
||||
}
|
||||
}
|
||||
var tabBarView: BottomTabBarView {
|
||||
return view as! BottomTabBarView
|
||||
}
|
||||
@objc static var controller: BottomTabBarViewController? {
|
||||
return MWMMapViewControlsManager.manager()?.tabBarController
|
||||
}
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
presenter.configure()
|
||||
|
||||
NotificationCenter.default.addObserver(forName: UserDefaults.didChangeNotification, object: nil, queue: nil) { _ in
|
||||
DispatchQueue.main.async {
|
||||
self.updateLeftButton()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override func viewWillAppear(_ animated: Bool) {
|
||||
super.viewWillAppear(animated)
|
||||
|
||||
leftButton?.imageView?.contentMode = .scaleAspectFit
|
||||
updateBadge()
|
||||
}
|
||||
|
||||
override func viewWillLayoutSubviews() {
|
||||
super.viewWillLayoutSubviews()
|
||||
updateLeftButton()
|
||||
}
|
||||
|
||||
static func updateAvailableArea(_ frame: CGRect) {
|
||||
BottomTabBarViewController.controller?.updateAvailableArea(frame)
|
||||
}
|
||||
|
||||
@IBAction func onSearchButtonPressed(_ sender: Any) {
|
||||
presenter.onSearchButtonPressed()
|
||||
}
|
||||
|
||||
@IBAction func onLeftButtonPressed(_ sender: Any) {
|
||||
presenter.onLeftButtonPressed()
|
||||
}
|
||||
|
||||
@IBAction func onBookmarksButtonPressed(_ sender: Any) {
|
||||
presenter.onBookmarksButtonPressed()
|
||||
}
|
||||
|
||||
@IBAction func onMenuButtonPressed(_ sender: Any) {
|
||||
presenter.onMenuButtonPressed()
|
||||
}
|
||||
|
||||
private func updateAvailableArea(_ frame:CGRect) {
|
||||
avaliableArea = frame
|
||||
updateFrame(animated: false)
|
||||
self.view.layoutIfNeeded()
|
||||
}
|
||||
|
||||
private func updateFrame(animated: Bool) {
|
||||
if avaliableArea == .zero {
|
||||
return
|
||||
}
|
||||
let newFrame = CGRect(x: avaliableArea.minX,
|
||||
y: isHidden ? avaliableArea.minY + avaliableArea.height : avaliableArea.minY,
|
||||
width: avaliableArea.width,
|
||||
height: avaliableArea.height)
|
||||
let alpha:CGFloat = isHidden ? 0 : 1
|
||||
if animated {
|
||||
UIView.animate(withDuration: kDefaultAnimationDuration,
|
||||
delay: 0,
|
||||
options: [.beginFromCurrentState],
|
||||
animations: {
|
||||
self.view.frame = newFrame
|
||||
self.view.alpha = alpha
|
||||
}, completion: nil)
|
||||
} else {
|
||||
self.view.frame = newFrame
|
||||
self.view.alpha = alpha
|
||||
}
|
||||
}
|
||||
|
||||
private func updateLeftButton() {
|
||||
let leftButtonType = Settings.leftButtonType
|
||||
if leftButtonType == .hidden {
|
||||
leftButton?.isHidden = true
|
||||
|
||||
if let searchConstraintWithLeftButton, let searchConstraintWithoutLeftButton, let bookmarksConstraintWithLeftButton, let bookmarksConstraintWithoutLeftButton {
|
||||
NSLayoutConstraint.activate([searchConstraintWithoutLeftButton, bookmarksConstraintWithoutLeftButton])
|
||||
NSLayoutConstraint.deactivate([searchConstraintWithLeftButton, bookmarksConstraintWithLeftButton])
|
||||
}
|
||||
} else {
|
||||
leftButton?.isHidden = false
|
||||
|
||||
leftButton?.setTitle(nil, for: .normal)
|
||||
leftButton?.setImage(leftButtonType.image, for: .normal)
|
||||
leftButton?.accessibilityLabel = leftButtonType.description;
|
||||
|
||||
if let searchConstraintWithLeftButton, let searchConstraintWithoutLeftButton, let bookmarksConstraintWithLeftButton, let bookmarksConstraintWithoutLeftButton {
|
||||
NSLayoutConstraint.activate([searchConstraintWithLeftButton, bookmarksConstraintWithLeftButton])
|
||||
NSLayoutConstraint.deactivate([searchConstraintWithoutLeftButton, bookmarksConstraintWithoutLeftButton])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private func updateBadge() {
|
||||
downloadBadge?.isHidden = isApplicationBadgeHidden
|
||||
}
|
||||
}
|
||||
148
iphone/Maps/UI/BottomMenu/TabBar/BottomTabBarViewController.xib
Normal file
@@ -0,0 +1,148 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="24128" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina6_1" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="24063"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="BottomTabBarViewController" customModule="CoMaps" customModuleProvider="target">
|
||||
<connections>
|
||||
<outlet property="bookmarksButton" destination="dgG-ki-3tB" id="md5-3T-9tb"/>
|
||||
<outlet property="bookmarksConstraintWithLeftButton" destination="Jc7-nc-elY" id="gW7-8e-E6m"/>
|
||||
<outlet property="bookmarksConstraintWithoutLeftButton" destination="NRb-vj-MFg" id="C3Z-Ia-D6i"/>
|
||||
<outlet property="downloadBadge" destination="uDI-ZC-4wx" id="fAf-cy-Ozn"/>
|
||||
<outlet property="leftButton" destination="dzf-7Z-N6a" id="LMZ-H7-ftQ"/>
|
||||
<outlet property="moreButton" destination="svD-yi-GrZ" id="kjk-ZW-nZN"/>
|
||||
<outlet property="searchButton" destination="No0-ld-JX3" id="m5F-UT-j94"/>
|
||||
<outlet property="searchConstraintWithLeftButton" destination="tDb-w1-ueQ" id="WaI-Xb-1bu"/>
|
||||
<outlet property="searchConstraintWithoutLeftButton" destination="cQg-jW-uSD" id="cMy-EC-G07"/>
|
||||
<outlet property="view" destination="zuH-WU-hiP" id="eoa-4I-wKs"/>
|
||||
</connections>
|
||||
</placeholder>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="zuH-WU-hiP" customClass="BottomTabBarView" customModule="CoMaps" customModuleProvider="target" propertyAccessControl="none">
|
||||
<rect key="frame" x="0.0" y="0.0" width="373" height="84"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<view opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="vum-s3-PHx" userLabel="MainButtons" customClass="ExtendedBottomTabBarContainerView" customModule="CoMaps" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="373" height="48"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleAspectFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="dzf-7Z-N6a" userLabel="LeftButton" customClass="BottomTabBarButton" customModule="CoMaps" customModuleProvider="target">
|
||||
<rect key="frame" x="22.5" y="0.0" width="48" height="48"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="helpButton"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" secondItem="dzf-7Z-N6a" secondAttribute="height" id="qNJ-0K-sK0"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="30"/>
|
||||
<inset key="imageEdgeInsets" minX="9" minY="9" maxX="9" maxY="9"/>
|
||||
<state key="normal" image="info.circle" catalog="system"/>
|
||||
<connections>
|
||||
<action selector="onLeftButtonPressed:" destination="-1" eventType="touchUpInside" id="1gx-P2-sRJ"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="249" horizontalCompressionResistancePriority="751" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="No0-ld-JX3" userLabel="Search" customClass="BottomTabBarButton" customModule="CoMaps" customModuleProvider="target">
|
||||
<rect key="frame" x="116" y="0.0" width="48" height="48"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="searchButton"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" secondItem="No0-ld-JX3" secondAttribute="height" id="2bW-fc-Hsh"/>
|
||||
</constraints>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" image="ic_menu_search"/>
|
||||
<connections>
|
||||
<action selector="onSearchButtonPressed:" destination="-1" eventType="touchUpInside" id="0D5-RB-HBQ"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleAspectFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="dgG-ki-3tB" userLabel="Bookmarks" customClass="BottomTabBarButton" customModule="CoMaps" customModuleProvider="target">
|
||||
<rect key="frame" x="209" y="0.0" width="48" height="48"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="bookmarksButton"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" secondItem="dgG-ki-3tB" secondAttribute="height" id="o3b-it-lrV"/>
|
||||
</constraints>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" image="ic_menu_bookmark_list"/>
|
||||
<connections>
|
||||
<action selector="onBookmarksButtonPressed:" destination="-1" eventType="touchUpInside" id="9Z1-eg-xth"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleAspectFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="svD-yi-GrZ" userLabel="Menu" customClass="BottomTabBarButton" customModule="CoMaps" customModuleProvider="target">
|
||||
<rect key="frame" x="302.5" y="0.0" width="48" height="48"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="menuButton"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" secondItem="svD-yi-GrZ" secondAttribute="height" id="gmG-3a-Mqe"/>
|
||||
</constraints>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" image="ic_menu"/>
|
||||
<connections>
|
||||
<action selector="onMenuButtonPressed:" destination="-1" eventType="touchUpInside" id="rzb-y4-nR1"/>
|
||||
</connections>
|
||||
</button>
|
||||
<view userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="uDI-ZC-4wx" userLabel="DownloadBadge">
|
||||
<rect key="frame" x="329.5" y="11" width="10" height="10"/>
|
||||
<color key="backgroundColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<accessibility key="accessibilityConfiguration">
|
||||
<accessibilityTraits key="traits" notEnabled="YES"/>
|
||||
</accessibility>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="10" id="tEP-Xi-qnU"/>
|
||||
<constraint firstAttribute="height" constant="10" id="wNg-5Z-7AO"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="styleName" value="Badge"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
</subviews>
|
||||
<accessibility key="accessibilityConfiguration" identifier="MainButtons"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="48" id="69A-eu-uLp"/>
|
||||
<constraint firstItem="No0-ld-JX3" firstAttribute="centerY" secondItem="vum-s3-PHx" secondAttribute="centerY" id="8nL-zT-Y7b"/>
|
||||
<constraint firstItem="No0-ld-JX3" firstAttribute="height" secondItem="vum-s3-PHx" secondAttribute="height" id="9eR-I7-7at"/>
|
||||
<constraint firstItem="svD-yi-GrZ" firstAttribute="height" secondItem="vum-s3-PHx" secondAttribute="height" id="Fde-um-JL6"/>
|
||||
<constraint firstItem="dgG-ki-3tB" firstAttribute="centerX" secondItem="vum-s3-PHx" secondAttribute="centerX" multiplier="1.25" id="Jc7-nc-elY"/>
|
||||
<constraint firstItem="dgG-ki-3tB" firstAttribute="centerY" secondItem="vum-s3-PHx" secondAttribute="centerY" id="JjT-sc-hIY"/>
|
||||
<constraint firstItem="dgG-ki-3tB" firstAttribute="centerX" secondItem="vum-s3-PHx" secondAttribute="centerX" priority="900" id="NRb-vj-MFg"/>
|
||||
<constraint firstItem="svD-yi-GrZ" firstAttribute="centerX" secondItem="vum-s3-PHx" secondAttribute="centerX" multiplier="1.75" id="Q0b-gd-HwS"/>
|
||||
<constraint firstItem="dgG-ki-3tB" firstAttribute="height" secondItem="vum-s3-PHx" secondAttribute="height" id="Rs8-Hl-CAc"/>
|
||||
<constraint firstItem="uDI-ZC-4wx" firstAttribute="centerX" secondItem="svD-yi-GrZ" secondAttribute="centerX" constant="8" id="XNb-Ba-Hn7"/>
|
||||
<constraint firstItem="dzf-7Z-N6a" firstAttribute="centerY" secondItem="vum-s3-PHx" secondAttribute="centerY" id="Zug-zY-KIX"/>
|
||||
<constraint firstItem="No0-ld-JX3" firstAttribute="centerX" secondItem="vum-s3-PHx" secondAttribute="centerX" multiplier="0.25" priority="900" id="cQg-jW-uSD"/>
|
||||
<constraint firstItem="svD-yi-GrZ" firstAttribute="centerY" secondItem="vum-s3-PHx" secondAttribute="centerY" id="sja-hO-YY3"/>
|
||||
<constraint firstItem="No0-ld-JX3" firstAttribute="centerX" secondItem="vum-s3-PHx" secondAttribute="centerX" multiplier="0.75" id="tDb-w1-ueQ"/>
|
||||
<constraint firstItem="dzf-7Z-N6a" firstAttribute="centerX" secondItem="vum-s3-PHx" secondAttribute="centerX" multiplier="0.25" id="u3G-gY-98J"/>
|
||||
<constraint firstItem="dzf-7Z-N6a" firstAttribute="height" secondItem="vum-s3-PHx" secondAttribute="height" id="yTg-8g-H1p"/>
|
||||
<constraint firstItem="uDI-ZC-4wx" firstAttribute="centerY" secondItem="svD-yi-GrZ" secondAttribute="centerY" constant="-8" id="yq3-ui-IaL"/>
|
||||
</constraints>
|
||||
<variation key="default">
|
||||
<mask key="constraints">
|
||||
<exclude reference="cQg-jW-uSD"/>
|
||||
<exclude reference="NRb-vj-MFg"/>
|
||||
</mask>
|
||||
</variation>
|
||||
</view>
|
||||
</subviews>
|
||||
<viewLayoutGuide key="safeArea" id="aaw-Hz-zma"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="vum-s3-PHx" firstAttribute="top" secondItem="zuH-WU-hiP" secondAttribute="top" id="PQS-ro-25e"/>
|
||||
<constraint firstItem="vum-s3-PHx" firstAttribute="leading" secondItem="zuH-WU-hiP" secondAttribute="leading" id="kza-JN-Dul"/>
|
||||
<constraint firstAttribute="trailing" secondItem="vum-s3-PHx" secondAttribute="trailing" id="sM6-P2-rN9"/>
|
||||
</constraints>
|
||||
<nil key="simulatedStatusBarMetrics"/>
|
||||
<nil key="simulatedTopBarMetrics"/>
|
||||
<nil key="simulatedBottomBarMetrics"/>
|
||||
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
|
||||
<connections>
|
||||
<outlet property="mainButtonsView" destination="vum-s3-PHx" id="fBi-DA-orA"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="72" y="254"/>
|
||||
</view>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="ic_menu" width="48" height="48"/>
|
||||
<image name="ic_menu_bookmark_list" width="48" height="48"/>
|
||||
<image name="ic_menu_search" width="48" height="48"/>
|
||||
<image name="info.circle" catalog="system" width="128" height="123"/>
|
||||
</resources>
|
||||
</document>
|
||||
@@ -1,144 +0,0 @@
|
||||
import SwiftUI
|
||||
|
||||
/// View for the interface button
|
||||
struct ControlsView: View {
|
||||
// MARK: Properties
|
||||
|
||||
/// The dismiss action of the environment
|
||||
@Environment(\.verticalSizeClass) private var verticalSizeClass
|
||||
|
||||
|
||||
@State private var hasZoomButtons: Bool = true
|
||||
|
||||
|
||||
@State private var leftMainButtonKind: MainButton.Kind = .hidden
|
||||
|
||||
|
||||
@State private var hasMainButtons: Bool = true
|
||||
|
||||
|
||||
/// The publisher to know when settings changed
|
||||
private let settingsPublisher = NotificationCenter.default.publisher(for: UserDefaults.didChangeNotification)
|
||||
|
||||
|
||||
/// The publisher to know when settings changed
|
||||
private let changeVisibilityMainButtonsPublisher = NotificationCenter.default.publisher(for: Controls.changeVisibilityMainButtonsNotificationName)
|
||||
|
||||
|
||||
/// The actual view
|
||||
var body: some View {
|
||||
ZStack {
|
||||
if verticalSizeClass != .compact {
|
||||
VStack(alignment: .trailing) {
|
||||
HStack {
|
||||
MapLayerButton()
|
||||
|
||||
Spacer(minLength: 0)
|
||||
|
||||
VStack {
|
||||
MapTrackRecordingButton()
|
||||
}
|
||||
}
|
||||
|
||||
Spacer(minLength: 0)
|
||||
|
||||
VStack(spacing: 72) {
|
||||
if hasZoomButtons {
|
||||
VStack(spacing: 36) {
|
||||
MapZoomButton(kind: .in)
|
||||
|
||||
MapZoomButton(kind: .out)
|
||||
}
|
||||
}
|
||||
|
||||
MapPositionButton()
|
||||
}
|
||||
|
||||
Spacer(minLength: 0)
|
||||
|
||||
if hasMainButtons {
|
||||
HStack {
|
||||
if leftMainButtonKind != .hidden {
|
||||
MainButton(kind: leftMainButtonKind)
|
||||
|
||||
Spacer(minLength: 0)
|
||||
}
|
||||
|
||||
MainButton(kind: .search)
|
||||
|
||||
Spacer(minLength: 0)
|
||||
|
||||
MainButton(kind: .bookmarks)
|
||||
|
||||
Spacer(minLength: 0)
|
||||
|
||||
MainButton(kind: .more)
|
||||
}
|
||||
.frame(maxWidth: .infinity)
|
||||
}
|
||||
}
|
||||
.padding([.leading, .trailing], 10)
|
||||
} else {
|
||||
HStack {
|
||||
VStack(alignment: .leading) {
|
||||
MapLayerButton()
|
||||
|
||||
Spacer(minLength: 0)
|
||||
|
||||
if hasMainButtons {
|
||||
HStack(spacing: 32) {
|
||||
if leftMainButtonKind != .hidden {
|
||||
MainButton(kind: leftMainButtonKind)
|
||||
}
|
||||
|
||||
MainButton(kind: .search)
|
||||
|
||||
MainButton(kind: .bookmarks)
|
||||
|
||||
MainButton(kind: .more)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Spacer(minLength: 0)
|
||||
|
||||
VStack(alignment: .trailing) {
|
||||
VStack {
|
||||
MapTrackRecordingButton()
|
||||
}
|
||||
|
||||
Spacer(minLength: 0)
|
||||
|
||||
if hasZoomButtons {
|
||||
VStack(spacing: 36) {
|
||||
MapZoomButton(kind: .in)
|
||||
|
||||
MapZoomButton(kind: .out)
|
||||
}
|
||||
}
|
||||
|
||||
Spacer(minLength: 0)
|
||||
|
||||
MapPositionButton()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.padding(.top, 14)
|
||||
.padding(.bottom, 2)
|
||||
.frame(maxWidth: .infinity, maxHeight: .infinity)
|
||||
.onAppear {
|
||||
hasZoomButtons = Settings.hasZoomButtons
|
||||
leftMainButtonKind = Settings.leftMainButtonKind
|
||||
hasMainButtons = Controls.shared().hasMainButtons()
|
||||
}
|
||||
.onReceive(settingsPublisher) { _ in
|
||||
hasZoomButtons = Settings.hasZoomButtons
|
||||
leftMainButtonKind = Settings.leftMainButtonKind
|
||||
}
|
||||
.onReceive(changeVisibilityMainButtonsPublisher) { _ in
|
||||
hasMainButtons = Controls.shared().hasMainButtons()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
import SwiftUI
|
||||
|
||||
struct FloatingButtonStyle: ButtonStyle {
|
||||
/// If the button is round
|
||||
var isRound: Bool = true
|
||||
|
||||
|
||||
func makeBody(configuration: Configuration) -> some View {
|
||||
configuration.label
|
||||
.labelStyle(.iconOnly)
|
||||
.padding(10)
|
||||
.aspectRatio(1, contentMode: .fill)
|
||||
.background {
|
||||
if isRound {
|
||||
Circle()
|
||||
.stroke(Color.white.opacity(0.7), lineWidth: 1)
|
||||
.background {
|
||||
Color.white.opacity(configuration.isPressed ? 0.7 : 0.8)
|
||||
.clipShape(Circle())
|
||||
}
|
||||
.aspectRatio(1, contentMode: .fill)
|
||||
.shadow(radius: 2)
|
||||
} else {
|
||||
RoundedRectangle(cornerRadius: 8)
|
||||
.stroke(Color.white.opacity(0.7), lineWidth: 1)
|
||||
.background {
|
||||
Color.white.opacity(configuration.isPressed ? 0.7 : 0.8)
|
||||
.clipShape(RoundedRectangle(cornerRadius: 8))
|
||||
}
|
||||
.aspectRatio(1, contentMode: .fill)
|
||||
.shadow(radius: 3)
|
||||
}
|
||||
}
|
||||
.font(.title2)
|
||||
.foregroundStyle(configuration.role == .destructive ? Color(.BaseColors.red) : Color.secondary)
|
||||
.scaleEffect(configuration.isPressed ? (isRound ? 0.96 : 0.98) : 1)
|
||||
.animation(.smooth, value: configuration.isPressed)
|
||||
}
|
||||
}
|
||||
@@ -1,79 +0,0 @@
|
||||
import SwiftUI
|
||||
|
||||
/// View for a main button
|
||||
struct MainButton: View {
|
||||
// MARK: Properties
|
||||
|
||||
/// The kind
|
||||
var kind: MainButton.Kind
|
||||
|
||||
|
||||
/// The actual view
|
||||
var body: some View {
|
||||
if kind != .hidden {
|
||||
Button {
|
||||
if kind == .addPlace {
|
||||
if let controlsManager = MWMMapViewControlsManager.manager() as? BottomMenuDelegate {
|
||||
controlsManager.addPlace()
|
||||
}
|
||||
} else if kind == .recordTrack {
|
||||
let trackRecorder: TrackRecordingManager = .shared
|
||||
switch trackRecorder.recordingState {
|
||||
case .active:
|
||||
MapViewController.shared()?.showTrackRecordingPlacePage()
|
||||
case .inactive:
|
||||
trackRecorder.start { result in
|
||||
switch result {
|
||||
case .success:
|
||||
MapViewController.shared()?.showTrackRecordingPlacePage()
|
||||
case .failure:
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if kind == .search {
|
||||
if let searchManager = MapViewController.shared()?.searchManager {
|
||||
if searchManager.isSearching {
|
||||
searchManager.close()
|
||||
} else {
|
||||
searchManager.startSearching(isRouting: false)
|
||||
}
|
||||
}
|
||||
} else if kind == .bookmarks {
|
||||
MapViewController.shared()?.bookmarksCoordinator.open()
|
||||
} else if kind == .settings {
|
||||
MapViewController.shared()?.openSettings()
|
||||
} else if kind == .help {
|
||||
MapViewController.shared()?.openAbout()
|
||||
} else if kind == .more {
|
||||
if let controlsManager = MWMMapViewControlsManager.manager() {
|
||||
if controlsManager.menuState == .active {
|
||||
controlsManager.menuState = .inactive
|
||||
} else if controlsManager.menuState == .inactive {
|
||||
controlsManager.menuState = .active
|
||||
}
|
||||
}
|
||||
} else if kind == .layers {
|
||||
if MapOverlayManager.trafficEnabled() || MapOverlayManager.transitEnabled() || MapOverlayManager.isoLinesEnabled() || MapOverlayManager.outdoorEnabled() {
|
||||
MapOverlayManager.setTrafficEnabled(false)
|
||||
MapOverlayManager.setTransitEnabled(false)
|
||||
MapOverlayManager.setIsoLinesEnabled(false)
|
||||
MapOverlayManager.setOutdoorEnabled(false)
|
||||
} else {
|
||||
MWMMapViewControlsManager.manager()?.menuState = .layers
|
||||
}
|
||||
}
|
||||
} label: {
|
||||
Label {
|
||||
Text(kind.description)
|
||||
} icon: {
|
||||
if kind != .layers, let image = kind.image {
|
||||
image
|
||||
}
|
||||
}
|
||||
}
|
||||
.buttonStyle(FloatingButtonStyle(isRound: false))
|
||||
.frame(minWidth: 44, idealWidth: 44, minHeight: 44, idealHeight: 44)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,81 +0,0 @@
|
||||
import SwiftUI
|
||||
|
||||
extension MainButton {
|
||||
/// The type of the left bottom bar button
|
||||
enum Kind: String, Codable, CaseIterable, Identifiable {
|
||||
case hidden = "Hidden"
|
||||
case addPlace = "AddPlace"
|
||||
case recordTrack = "RecordTrack"
|
||||
case search = "Search"
|
||||
case bookmarks = "Bookmarks"
|
||||
case settings = "Settings"
|
||||
case help = "Help"
|
||||
case more = "More"
|
||||
case layers = "Layers"
|
||||
|
||||
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
/// The configurable cases
|
||||
static var configurableCases: [MainButton.Kind] {
|
||||
allCases.filter { kind in
|
||||
return kind != .more && kind != .bookmarks && kind != .search
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// The id
|
||||
var id: Self { self }
|
||||
|
||||
|
||||
/// The description text
|
||||
var description: String {
|
||||
switch self {
|
||||
case .hidden:
|
||||
return String(localized: "disabled")
|
||||
case .addPlace:
|
||||
return String(localized: "placepage_add_place_button")
|
||||
case .recordTrack:
|
||||
return String(localized: "start_track_recording")
|
||||
case .search:
|
||||
return String(localized: "search")
|
||||
case .bookmarks:
|
||||
return String(localized: "bookmarks")
|
||||
case .settings:
|
||||
return String(localized: "settings")
|
||||
case .help:
|
||||
return String(localized: "help")
|
||||
case .more:
|
||||
return String(localized: "placepage_more_button")
|
||||
case .layers:
|
||||
return String(localized: "layers_title")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// The image
|
||||
var image: Image? {
|
||||
switch self {
|
||||
case .addPlace:
|
||||
return Image(systemName: "plus")
|
||||
case .recordTrack:
|
||||
return Image(.MainButtons.LeftButton.recordTrack)
|
||||
case .search:
|
||||
return Image(systemName: "magnifyingglass")
|
||||
case .bookmarks:
|
||||
return Image(systemName: "list.star")
|
||||
case .settings:
|
||||
return Image(systemName: "gearshape.fill")
|
||||
case .help:
|
||||
return Image(systemName: "info.circle")
|
||||
case .layers:
|
||||
return Image(systemName: "square.stack.3d.up.fill")
|
||||
case .more:
|
||||
return Image(systemName: "ellipsis.circle")
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
import SwiftUI
|
||||
|
||||
/// View for a map layer button
|
||||
struct MapLayerButton: View {
|
||||
// MARK: Properties
|
||||
|
||||
/// The actual view
|
||||
var body: some View {
|
||||
Group {
|
||||
if Settings.leftMainButtonKind != .layers {
|
||||
Button {
|
||||
if MapOverlayManager.trafficEnabled() || MapOverlayManager.transitEnabled() || MapOverlayManager.isoLinesEnabled() || MapOverlayManager.outdoorEnabled() {
|
||||
MapOverlayManager.setTrafficEnabled(false)
|
||||
MapOverlayManager.setTransitEnabled(false)
|
||||
MapOverlayManager.setIsoLinesEnabled(false)
|
||||
MapOverlayManager.setOutdoorEnabled(false)
|
||||
} else {
|
||||
MWMMapViewControlsManager.manager()?.menuState = .layers
|
||||
}
|
||||
} label: {
|
||||
Label("Show Layers", systemImage: "square.stack.3d.up.fill")
|
||||
}
|
||||
.buttonStyle(FloatingButtonStyle())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
import SwiftUI
|
||||
|
||||
/// View for a map position mode button
|
||||
struct MapPositionButton: View {
|
||||
// MARK: Properties
|
||||
|
||||
/// The mode
|
||||
@State private var mode: MapPositionButton.Mode = .locate
|
||||
|
||||
|
||||
/// The publisher to know when to stop showing the Safari view for the login form
|
||||
private let switchPositionModePublisher = NotificationCenter.default.publisher(for: Controls.switchPositionModeNotificationName)
|
||||
|
||||
|
||||
/// The actual view
|
||||
var body: some View {
|
||||
Button {
|
||||
Controls.switchToNextPositionMode()
|
||||
} label: {
|
||||
Label {
|
||||
Text(mode.description)
|
||||
} icon: {
|
||||
if mode == .following || mode == .followingAndRotated {
|
||||
mode.image
|
||||
.foregroundStyle(Color.BaseColors.blue)
|
||||
} else {
|
||||
mode.image
|
||||
}
|
||||
}
|
||||
}
|
||||
.buttonStyle(FloatingButtonStyle())
|
||||
.onAppear {
|
||||
mode = Controls.positionMode
|
||||
}
|
||||
.onReceive(switchPositionModePublisher) { _ in
|
||||
mode = Controls.positionMode
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
import SwiftUI
|
||||
|
||||
extension MapPositionButton {
|
||||
/// The mode of the map position button
|
||||
enum Mode: String, Codable, CaseIterable, Identifiable {
|
||||
case locate = "Locate"
|
||||
case locating = "Locating"
|
||||
case following = "Following"
|
||||
case followingAndRotated = "FollowingAndRotated"
|
||||
|
||||
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
/// The id
|
||||
var id: Self { self }
|
||||
|
||||
|
||||
/// The description text
|
||||
var description: String {
|
||||
switch self {
|
||||
case .locate:
|
||||
return String(localized: "Find own location")
|
||||
case .locating:
|
||||
return String(localized: "Finding own location...")
|
||||
case .following:
|
||||
return String(localized: "Rotate map towards own direction")
|
||||
case .followingAndRotated:
|
||||
return String(localized: "Rotate map towards North")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// The image
|
||||
var image: Image {
|
||||
switch self {
|
||||
case .locate:
|
||||
return Image(systemName: "location")
|
||||
case .locating:
|
||||
return Image(systemName: "progress.indicator")
|
||||
case .following:
|
||||
return Image(systemName: "location.fill")
|
||||
case .followingAndRotated:
|
||||
return Image(systemName: "location.north.line.fill")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,45 +0,0 @@
|
||||
import SwiftUI
|
||||
|
||||
/// View for a map track recording button
|
||||
struct MapTrackRecordingButton: View {
|
||||
// MARK: Properties
|
||||
|
||||
/// The mode
|
||||
@State private var isRecording: Bool = false
|
||||
|
||||
|
||||
/// The publisher to know when to stop showing the Safari view for the login form
|
||||
private let changeChangeTrackRecordingPublisher = NotificationCenter.default.publisher(for: Controls.changeChangeTrackRecordingNotificationName)
|
||||
|
||||
|
||||
/// The actual view
|
||||
var body: some View {
|
||||
ZStack {
|
||||
if isRecording {
|
||||
Button(role: .destructive) {
|
||||
if isRecording {
|
||||
MapViewController.shared()?.showTrackRecordingPlacePage()
|
||||
} else {
|
||||
TrackRecordingManager.shared.start { result in
|
||||
switch result {
|
||||
case .success:
|
||||
MapViewController.shared()?.showTrackRecordingPlacePage()
|
||||
case .failure:
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
} label: {
|
||||
Label("Show Track Recording", systemImage: "record.circle")
|
||||
}
|
||||
.buttonStyle(FloatingButtonStyle())
|
||||
}
|
||||
}
|
||||
.onAppear {
|
||||
isRecording = (TrackRecordingManager.shared.recordingState == .active)
|
||||
}
|
||||
.onReceive(changeChangeTrackRecordingPublisher) { _ in
|
||||
isRecording = (TrackRecordingManager.shared.recordingState == .active)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
import SwiftUI
|
||||
|
||||
/// View for a map zoom button
|
||||
struct MapZoomButton: View {
|
||||
// MARK: Properties
|
||||
|
||||
/// The kind
|
||||
var kind: MapZoomButton.Kind
|
||||
|
||||
|
||||
/// The actual view
|
||||
var body: some View {
|
||||
Button {
|
||||
if kind == .in {
|
||||
Controls.zoomIn()
|
||||
} else if kind == .out {
|
||||
Controls.zoomOut()
|
||||
}
|
||||
} label: {
|
||||
Label {
|
||||
Text(kind.description)
|
||||
} icon: {
|
||||
kind.image
|
||||
}
|
||||
}
|
||||
.buttonStyle(FloatingButtonStyle())
|
||||
}
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
import SwiftUI
|
||||
|
||||
extension MapZoomButton {
|
||||
/// The type of the map zoom button
|
||||
enum Kind: String, Codable, CaseIterable, Identifiable {
|
||||
case `in` = "In"
|
||||
case out = "Out"
|
||||
|
||||
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
/// The id
|
||||
var id: Self { self }
|
||||
|
||||
|
||||
/// The description text
|
||||
var description: String {
|
||||
switch self {
|
||||
case .in:
|
||||
return String(localized: "zoom_in")
|
||||
case .out:
|
||||
return String(localized: "zoom_out")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// The image
|
||||
var image: Image {
|
||||
switch self {
|
||||
case .in:
|
||||
return Image(systemName: "plus")
|
||||
case .out:
|
||||
return Image(systemName: "minus")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,7 @@ struct SettingsView: View {
|
||||
|
||||
|
||||
/// The selected left button type
|
||||
@State private var selectedLeftMainButtonKind: MainButton.Kind = .help
|
||||
@State private var selectedLeftButtonType: Settings.LeftButtonType = .help
|
||||
|
||||
|
||||
/// If 3D buildings should be displayed
|
||||
@@ -112,9 +112,9 @@ struct SettingsView: View {
|
||||
Toggle("pref_zoom_title", isOn: $hasZoomButtons)
|
||||
.tint(.accent)
|
||||
|
||||
Picker(selection: $selectedLeftMainButtonKind) {
|
||||
ForEach(MainButton.Kind.configurableCases) { leftMainButtonKind in
|
||||
Text(leftMainButtonKind.description)
|
||||
Picker(selection: $selectedLeftButtonType) {
|
||||
ForEach(Settings.LeftButtonType.allCases) { leftButtonType in
|
||||
Text(leftButtonType.description)
|
||||
}
|
||||
} label: {
|
||||
Text("pref_left_button_type")
|
||||
@@ -291,7 +291,7 @@ struct SettingsView: View {
|
||||
.onAppear {
|
||||
selectedDistanceUnit = Settings.distanceUnit
|
||||
hasZoomButtons = Settings.hasZoomButtons
|
||||
selectedLeftMainButtonKind = Settings.leftMainButtonKind
|
||||
selectedLeftButtonType = Settings.leftButtonType
|
||||
has3dBuildings = Settings.has3dBuildings
|
||||
hasAutomaticDownload = Settings.hasAutomaticDownload
|
||||
hasIncreasedFontsize = Settings.hasIncreasedFontsize
|
||||
@@ -311,8 +311,8 @@ struct SettingsView: View {
|
||||
.onChange(of: hasZoomButtons) { changedHasZoomButtons in
|
||||
Settings.hasZoomButtons = changedHasZoomButtons
|
||||
}
|
||||
.onChange(of: selectedLeftMainButtonKind) { changedSelectedLeftMainButtonKind in
|
||||
Settings.leftMainButtonKind = changedSelectedLeftMainButtonKind
|
||||
.onChange(of: selectedLeftButtonType) { changedSelectedLeftButtonType in
|
||||
Settings.leftButtonType = changedSelectedLeftButtonType
|
||||
}
|
||||
.onChange(of: has3dBuildings) { changedHas3dBuildings in
|
||||
Settings.has3dBuildings = changedHas3dBuildings
|
||||
|
||||
@@ -196,22 +196,14 @@ m2::PointF GetOffset(int offsetX, int offsetY)
|
||||
|
||||
bool IsSymbolRoadShield(ftypes::RoadShield const & shield)
|
||||
{
|
||||
return shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Green || shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Blue || shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Red || shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Turkey || shield.m_type == ftypes::RoadShieldType::US_Interstate || shield.m_type == ftypes::RoadShieldType::US_Highway || shield.m_type == ftypes::RoadShieldType::Italy_Autostrada;
|
||||
return shield.m_type == ftypes::RoadShieldType::US_Interstate || shield.m_type == ftypes::RoadShieldType::US_Highway || shield.m_type == ftypes::RoadShieldType::Italy_Autostrada;
|
||||
}
|
||||
|
||||
std::string GetRoadShieldSymbolName(ftypes::RoadShield const & shield, double fontScale)
|
||||
{
|
||||
ASSERT(IsSymbolRoadShield(shield), ());
|
||||
std::string result = "";
|
||||
if (shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Green)
|
||||
result = "shield-highway_hexagon_green";
|
||||
else if (shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Blue)
|
||||
result = "shield-highway_hexagon_blue";
|
||||
else if (shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Red)
|
||||
result = "shield-highway_hexagon_red";
|
||||
else if (shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Turkey)
|
||||
result = "shield-highway_hexagon_turkey";
|
||||
else if (shield.m_type == ftypes::RoadShieldType::US_Interstate)
|
||||
if (shield.m_type == ftypes::RoadShieldType::US_Interstate)
|
||||
result = shield.m_name.size() <= 2 ? "shield-us-i-thin" : "shield-us-i-wide";
|
||||
else if (shield.m_type == ftypes::RoadShieldType::US_Highway)
|
||||
result = shield.m_name.size() <= 2 ? "shield-us-hw-thin" : "shield-us-hw-wide";
|
||||
@@ -314,10 +306,6 @@ dp::Color GetRoadShieldTextColor(dp::Color const & baseColor, ftypes::RoadShield
|
||||
{RoadShieldType::Generic_Pill_Blue_Bordered, kRoadShieldWhiteTextColor},
|
||||
{RoadShieldType::Generic_Pill_Red_Bordered, kRoadShieldWhiteTextColor},
|
||||
{RoadShieldType::Generic_Pill_Orange_Bordered, kRoadShieldBlackTextColor},
|
||||
{RoadShieldType::Highway_Hexagon_Green, kRoadShieldWhiteTextColor},
|
||||
{RoadShieldType::Highway_Hexagon_Blue, kRoadShieldWhiteTextColor},
|
||||
{RoadShieldType::Highway_Hexagon_Red, kRoadShieldWhiteTextColor},
|
||||
{RoadShieldType::Highway_Hexagon_Turkey, kRoadShieldBlackTextColor},
|
||||
{RoadShieldType::US_Interstate, kRoadShieldWhiteTextColor},
|
||||
{RoadShieldType::US_Highway, kRoadShieldBlackTextColor},
|
||||
{RoadShieldType::UK_Highway, kRoadShieldUKYellowTextColor},
|
||||
|
||||
@@ -353,7 +353,7 @@ void RuleDrawer::ProcessLineStyle(FeatureType & f, Stylist const & s, TInsertSha
|
||||
df::RoadClass m_roadClass;
|
||||
};
|
||||
static Checker const checkers[] = {
|
||||
{{HighwayClass::Motorway, HighwayClass::Trunk, HighwayClass::Primary}, kRoadClass0ZoomLevel, df::RoadClass::Class0},
|
||||
{{HighwayClass::Trunk, HighwayClass::Primary}, kRoadClass0ZoomLevel, df::RoadClass::Class0},
|
||||
{{HighwayClass::Secondary, HighwayClass::Tertiary}, kRoadClass1ZoomLevel, df::RoadClass::Class1},
|
||||
{{HighwayClass::LivingStreet, HighwayClass::Service, HighwayClass::ServiceMinor},
|
||||
kRoadClass2ZoomLevel,
|
||||
|
||||
@@ -30,8 +30,8 @@ public:
|
||||
m_map[c.GetTypeByPath({"route", "ferry"})] = HighwayClass::Transported;
|
||||
m_map[c.GetTypeByPath({"route", "shuttle_train"})] = HighwayClass::Transported;
|
||||
|
||||
m_map[c.GetTypeByPath({"highway", "motorway"})] = HighwayClass::Motorway;
|
||||
m_map[c.GetTypeByPath({"highway", "motorway_link"})] = HighwayClass::Motorway;
|
||||
m_map[c.GetTypeByPath({"highway", "motorway"})] = HighwayClass::Trunk;
|
||||
m_map[c.GetTypeByPath({"highway", "motorway_link"})] = HighwayClass::Trunk;
|
||||
m_map[c.GetTypeByPath({"highway", "trunk"})] = HighwayClass::Trunk;
|
||||
m_map[c.GetTypeByPath({"highway", "trunk_link"})] = HighwayClass::Trunk;
|
||||
|
||||
@@ -83,7 +83,6 @@ char const * HighwayClassToString(HighwayClass const cls)
|
||||
{
|
||||
case HighwayClass::Undefined: return "Undefined";
|
||||
case HighwayClass::Transported: return "Transported";
|
||||
case HighwayClass::Motorway: return "Motorway";
|
||||
case HighwayClass::Trunk: return "Trunk";
|
||||
case HighwayClass::Primary: return "Primary";
|
||||
case HighwayClass::Secondary: return "Secondary";
|
||||
|
||||
@@ -674,7 +674,6 @@ uint64_t GetPopulationByRadius(double r);
|
||||
enum class HighwayClass
|
||||
{
|
||||
Undefined = 0, // There has not been any attempt of calculating HighwayClass.
|
||||
Motorway,
|
||||
Trunk,
|
||||
Primary,
|
||||
Secondary,
|
||||
|
||||
@@ -107,7 +107,7 @@ UNIT_TEST(GetHighwayClassTest)
|
||||
|
||||
feature::TypesHolder types2;
|
||||
types2.Add(c.GetTypeByPath({"highway", "motorway_link", "tunnel"}));
|
||||
TEST_EQUAL(ftypes::GetHighwayClass(types2), ftypes::HighwayClass::Motorway, ());
|
||||
TEST_EQUAL(ftypes::GetHighwayClass(types2), ftypes::HighwayClass::Trunk, ());
|
||||
|
||||
feature::TypesHolder types3;
|
||||
types3.Add(c.GetTypeByPath({"highway", "unclassified"}));
|
||||
|
||||
@@ -94,7 +94,7 @@ class RoadShieldParser
|
||||
public:
|
||||
explicit RoadShieldParser(std::string const & baseRoadNumber) : m_baseRoadNumber(baseRoadNumber) {}
|
||||
virtual ~RoadShieldParser() = default;
|
||||
virtual RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const = 0;
|
||||
virtual RoadShield ParseRoadShield(std::string_view rawText) const = 0;
|
||||
|
||||
RoadShieldType FindNetworkShield(std::string network) const
|
||||
{
|
||||
@@ -127,20 +127,18 @@ public:
|
||||
RoadShieldsSetT GetRoadShields() const
|
||||
{
|
||||
RoadShieldsSetT result, defaultShields;
|
||||
|
||||
uint8_t index = 0;
|
||||
|
||||
strings::Tokenize(m_baseRoadNumber, ";", [&](std::string_view rawText)
|
||||
{
|
||||
++index;
|
||||
RoadShield shield;
|
||||
auto slashPos = rawText.find('/');
|
||||
if (slashPos == std::string::npos)
|
||||
{
|
||||
shield = ParseRoadShield(rawText, index);
|
||||
shield = ParseRoadShield(rawText);
|
||||
}
|
||||
else
|
||||
{
|
||||
shield = ParseRoadShield(rawText.substr(slashPos + 1), index);
|
||||
shield = ParseRoadShield(rawText.substr(slashPos + 1));
|
||||
// TODO: use a network-based shield type override only if a parser couldn't make it
|
||||
// more specific than country's default shield type.
|
||||
// E.g. "94" is set to Generic_Orange by Estonia parser, but then
|
||||
@@ -178,7 +176,7 @@ class USRoadShieldParser : public RoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit USRoadShieldParser(std::string const & baseRoadNumber) : RoadShieldParser(baseRoadNumber) {}
|
||||
RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const override
|
||||
RoadShield ParseRoadShield(std::string_view rawText) const override
|
||||
{
|
||||
std::string shieldText(rawText);
|
||||
|
||||
@@ -238,7 +236,7 @@ class IndiaRoadShieldParser : public RoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit IndiaRoadShieldParser(std::string const & baseRoadNumber) : RoadShieldParser(baseRoadNumber) {}
|
||||
RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const override
|
||||
RoadShield ParseRoadShield(std::string_view rawText) const override
|
||||
{
|
||||
std::string shieldText(rawText);
|
||||
|
||||
@@ -271,7 +269,7 @@ public:
|
||||
, m_type(defaultType)
|
||||
{}
|
||||
|
||||
RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const override
|
||||
RoadShield ParseRoadShield(std::string_view rawText) const override
|
||||
{
|
||||
if (rawText.size() > kMaxRoadShieldBytesSize)
|
||||
return RoadShield();
|
||||
@@ -306,7 +304,7 @@ public:
|
||||
, m_defaultType(defaultType)
|
||||
{}
|
||||
|
||||
RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const override
|
||||
RoadShield ParseRoadShield(std::string_view rawText) const override
|
||||
{
|
||||
if (rawText.size() > kMaxRoadShieldBytesSize)
|
||||
return RoadShield();
|
||||
@@ -331,72 +329,6 @@ private:
|
||||
RoadShieldType const m_defaultType;
|
||||
};
|
||||
|
||||
// Matches by a list of given highway classes for the first shield.
|
||||
// Falls back to matching by a list of given substrings (identical to SimpleRoadShieldParser) for all other shields.
|
||||
class HighwayClassRoadShieldParser : public RoadShieldParser
|
||||
{
|
||||
public:
|
||||
struct Entry
|
||||
{
|
||||
Entry() = default;
|
||||
Entry(std::string_view name, HighwayClass highwayClass, RoadShieldType type, bool isRedundant = false) : m_name(name), m_highwayClass(highwayClass), m_type(type), m_isRedundant(isRedundant) {}
|
||||
|
||||
std::string_view m_name;
|
||||
HighwayClass m_highwayClass = HighwayClass::Undefined;
|
||||
RoadShieldType m_type = RoadShieldType::Default;
|
||||
/* Hides a specific secondary etc. sign, if there is a primary one */
|
||||
bool m_isRedundant = false;
|
||||
};
|
||||
|
||||
using ShieldTypes = buffer_vector<Entry, 8>;
|
||||
|
||||
HighwayClassRoadShieldParser(std::string const & baseRoadNumber, HighwayClass highwayClass, ShieldTypes && types, RoadShieldType defaultType = RoadShieldType::Default)
|
||||
: RoadShieldParser(baseRoadNumber)
|
||||
, m_highwayClass(highwayClass)
|
||||
, m_types(std::move(types))
|
||||
, m_defaultType(defaultType)
|
||||
{}
|
||||
|
||||
RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const override
|
||||
{
|
||||
if (rawText.size() > kMaxRoadShieldBytesSize)
|
||||
return RoadShield();
|
||||
|
||||
RoadShieldType type = m_defaultType;
|
||||
if (index == 1) {
|
||||
for (auto const & p : m_types)
|
||||
{
|
||||
if (p.m_highwayClass == m_highwayClass)
|
||||
{
|
||||
return RoadShield(p.m_type, rawText);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
size_t idx = std::numeric_limits<size_t>::max();
|
||||
for (auto const & p : m_types)
|
||||
{
|
||||
auto const i = rawText.find(p.m_name);
|
||||
if (i != std::string::npos && i < idx)
|
||||
{
|
||||
if (p.m_isRedundant) {
|
||||
type = RoadShieldType::Hidden;
|
||||
} else {
|
||||
type = p.m_type;
|
||||
}
|
||||
idx = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return {type, rawText};
|
||||
}
|
||||
|
||||
private:
|
||||
HighwayClass const m_highwayClass;
|
||||
ShieldTypes const m_types;
|
||||
RoadShieldType const m_defaultType;
|
||||
};
|
||||
|
||||
uint16_t constexpr kAnyHigherRoadNumber = std::numeric_limits<uint16_t>::max();
|
||||
|
||||
// Matches by a list of numeric ranges (a first matching range is used).
|
||||
@@ -422,7 +354,7 @@ public:
|
||||
, m_types(std::move(types))
|
||||
{}
|
||||
|
||||
RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const override
|
||||
RoadShield ParseRoadShield(std::string_view rawText) const override
|
||||
{
|
||||
if (rawText.size() > kMaxRoadShieldBytesSize)
|
||||
return RoadShield();
|
||||
@@ -471,7 +403,7 @@ public:
|
||||
, m_defaultType(defaultType)
|
||||
{}
|
||||
|
||||
RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const override
|
||||
RoadShield ParseRoadShield(std::string_view rawText) const override
|
||||
{
|
||||
uint32_t constexpr kMaxRoadShieldSymbolsSize = 4 * kMaxRoadShieldBytesSize;
|
||||
|
||||
@@ -497,15 +429,14 @@ private:
|
||||
|
||||
// Implementations of "ref" parses for some countries.
|
||||
|
||||
class AustriaRoadShieldParser : public HighwayClassRoadShieldParser
|
||||
class AustriaRoadShieldParser : public SimpleRoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit AustriaRoadShieldParser(std::string const & baseRoadNumber, HighwayClass const & highwayClass)
|
||||
: HighwayClassRoadShieldParser(baseRoadNumber, highwayClass,
|
||||
{{"A", HighwayClass::Motorway, RoadShieldType::Generic_Blue_Bordered},
|
||||
{"S", HighwayClass::Trunk, RoadShieldType::Generic_Blue_Bordered},
|
||||
{"B", HighwayClass::Primary, RoadShieldType::Generic_Blue},
|
||||
{"L", HighwayClass::Secondary, RoadShieldType::Generic_Pill_White_Bordered}})
|
||||
explicit AustriaRoadShieldParser(std::string const & baseRoadNumber)
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Generic_Blue_Bordered},
|
||||
{"S", RoadShieldType::Generic_Blue_Bordered},
|
||||
{"B", RoadShieldType::Generic_Blue},
|
||||
{"L", RoadShieldType::Generic_Pill_White_Bordered}})
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -523,7 +454,7 @@ class GreeceRoadShieldParser : public SimpleRoadShieldParser
|
||||
public:
|
||||
explicit GreeceRoadShieldParser(std::string const & baseRoadNumber)
|
||||
: SimpleRoadShieldParser(baseRoadNumber,
|
||||
{{"Α", RoadShieldType::Highway_Hexagon_Green}, {"Ε", RoadShieldType::Generic_Blue}})
|
||||
{{"Α", RoadShieldType::Generic_Green}, {"Ε", RoadShieldType::Generic_Blue}})
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -549,15 +480,6 @@ public:
|
||||
{}
|
||||
};
|
||||
|
||||
class TurkeyRoadShieldParser : public SimpleRoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit TurkeyRoadShieldParser(std::string const & baseRoadNumber)
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"O", RoadShieldType::Highway_Hexagon_Turkey},
|
||||
{"D", RoadShieldType::Generic_Blue}})
|
||||
{}
|
||||
};
|
||||
|
||||
class LativaRoadShieldParser : public SimpleRoadShieldParser
|
||||
{
|
||||
public:
|
||||
@@ -602,7 +524,7 @@ class SerbiaRoadShieldParser : public SimpleRoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit SerbiaRoadShieldParser(std::string const & baseRoadNumber)
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Highway_Hexagon_Green}})
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Generic_Green}})
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -618,7 +540,7 @@ class SloveniaRoadShieldParser : public SimpleRoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit SloveniaRoadShieldParser(std::string const & baseRoadNumber)
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Highway_Hexagon_Green}})
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Generic_Green}})
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -626,7 +548,7 @@ class SwitzerlandRoadShieldParser : public SimpleRoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit SwitzerlandRoadShieldParser(std::string const & baseRoadNumber)
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Highway_Hexagon_Red}})
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Generic_Red}})
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -634,7 +556,7 @@ class LiechtensteinRoadShieldParser : public SimpleRoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit LiechtensteinRoadShieldParser(std::string const & baseRoadNumber)
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Highway_Hexagon_Red}})
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Generic_Red}})
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -654,16 +576,11 @@ public:
|
||||
{}
|
||||
};
|
||||
|
||||
class UKRoadShieldParser : public HighwayClassRoadShieldParser
|
||||
class UKRoadShieldParser : public SimpleRoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit UKRoadShieldParser(std::string const & baseRoadNumber, HighwayClass const & highwayClass)
|
||||
: HighwayClassRoadShieldParser(baseRoadNumber, highwayClass,
|
||||
{{"M", HighwayClass::Motorway, RoadShieldType::Generic_Blue, true},
|
||||
{"E", HighwayClass::Motorway, RoadShieldType::Hidden},
|
||||
{"A", HighwayClass::Trunk, RoadShieldType::UK_Highway, true},
|
||||
{"A", HighwayClass::Primary, RoadShieldType::Generic_White_Bordered},
|
||||
{"B", HighwayClass::Secondary, RoadShieldType::Generic_White_Bordered}})
|
||||
explicit UKRoadShieldParser(std::string const & baseRoadNumber)
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"M", RoadShieldType::Generic_Blue}, {"A", RoadShieldType::UK_Highway}})
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -679,17 +596,14 @@ public:
|
||||
{}
|
||||
};
|
||||
|
||||
class GermanyRoadShieldParser : public HighwayClassRoadShieldParser
|
||||
class GermanyRoadShieldParser : public SimpleRoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit GermanyRoadShieldParser(std::string const & baseRoadNumber, HighwayClass const & highwayClass)
|
||||
: HighwayClassRoadShieldParser(baseRoadNumber, highwayClass,
|
||||
{{"A", HighwayClass::Motorway, RoadShieldType::Highway_Hexagon_Blue},
|
||||
{"D", HighwayClass::Motorway, RoadShieldType::Hidden},
|
||||
{"B", HighwayClass::Trunk, RoadShieldType::Generic_Orange_Bordered},
|
||||
{"B", HighwayClass::Primary, RoadShieldType::Generic_Orange_Bordered},
|
||||
{"L", HighwayClass::Secondary, RoadShieldType::Generic_White_Bordered},
|
||||
{"K", HighwayClass::Secondary, RoadShieldType::Generic_White_Bordered}})
|
||||
explicit GermanyRoadShieldParser(std::string const & baseRoadNumber)
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Generic_Blue},
|
||||
{"B", RoadShieldType::Generic_Orange_Bordered},
|
||||
{"L", RoadShieldType::Generic_White_Bordered},
|
||||
{"K", RoadShieldType::Generic_White_Bordered}})
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -796,7 +710,7 @@ class MexicoRoadShieldParser : public RoadShieldParser
|
||||
public:
|
||||
explicit MexicoRoadShieldParser(std::string const & baseRoadNumber) : RoadShieldParser(baseRoadNumber) {}
|
||||
|
||||
RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const override
|
||||
RoadShield ParseRoadShield(std::string_view rawText) const override
|
||||
{
|
||||
std::string shieldText(rawText);
|
||||
|
||||
@@ -839,10 +753,6 @@ RoadShieldsSetT GetRoadShields(FeatureType & f)
|
||||
if (ref.empty())
|
||||
return {};
|
||||
|
||||
auto const & highwayClass = ftypes::GetHighwayClass(feature::TypesHolder(f));
|
||||
if (highwayClass == HighwayClass::Undefined)
|
||||
return {};
|
||||
|
||||
// Find out country name.
|
||||
std::string mwmName = f.GetID().GetMwmName();
|
||||
ASSERT(!mwmName.empty(), (f.GetID()));
|
||||
@@ -851,19 +761,19 @@ RoadShieldsSetT GetRoadShields(FeatureType & f)
|
||||
if (underlinePos != std::string::npos)
|
||||
mwmName = mwmName.substr(0, underlinePos);
|
||||
|
||||
return GetRoadShields(mwmName, ref, highwayClass);
|
||||
return GetRoadShields(mwmName, ref);
|
||||
}
|
||||
|
||||
RoadShieldsSetT GetRoadShields(std::string const & mwmName, std::string const & roadNumber, HighwayClass const & highwayClass)
|
||||
RoadShieldsSetT GetRoadShields(std::string const & mwmName, std::string const & roadNumber)
|
||||
{
|
||||
if (mwmName == "US")
|
||||
return USRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "UK")
|
||||
return UKRoadShieldParser(roadNumber, highwayClass).GetRoadShields();
|
||||
return UKRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "India")
|
||||
return IndiaRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "Austria")
|
||||
return AustriaRoadShieldParser(roadNumber, highwayClass).GetRoadShields();
|
||||
return AustriaRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "Belgium")
|
||||
return BelgiumRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "Greece")
|
||||
@@ -872,8 +782,6 @@ RoadShieldsSetT GetRoadShields(std::string const & mwmName, std::string const &
|
||||
return IrelandRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "Italy")
|
||||
return ItalyRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "Turkey")
|
||||
return TurkeyRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "Lativa")
|
||||
return LativaRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "Moldova")
|
||||
@@ -897,7 +805,7 @@ RoadShieldsSetT GetRoadShields(std::string const & mwmName, std::string const &
|
||||
if (mwmName == "France")
|
||||
return FranceRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "Germany")
|
||||
return GermanyRoadShieldParser(roadNumber, highwayClass).GetRoadShields();
|
||||
return GermanyRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "Spain")
|
||||
return SpainRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "Ukraine")
|
||||
@@ -966,10 +874,6 @@ std::string DebugPrint(RoadShieldType shieldType)
|
||||
case RoadShieldType::Generic_Pill_Blue_Bordered: return "blue pill bordered";
|
||||
case RoadShieldType::Generic_Pill_Red_Bordered: return "red pill bordered";
|
||||
case RoadShieldType::Generic_Pill_Orange_Bordered: return "orange pill bordered";
|
||||
case RoadShieldType::Highway_Hexagon_Green: return "highway hexagon green";
|
||||
case RoadShieldType::Highway_Hexagon_Blue: return "highway hexagon blue";
|
||||
case RoadShieldType::Highway_Hexagon_Red: return "highway hexagon red";
|
||||
case RoadShieldType::Highway_Hexagon_Turkey: return "highway hexagon turkey";
|
||||
case RoadShieldType::US_Interstate: return "US interstate";
|
||||
case RoadShieldType::US_Highway: return "US highway";
|
||||
case RoadShieldType::UK_Highway: return "UK highway";
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "indexer/feature.hpp"
|
||||
#include "indexer/ftypes_matcher.hpp"
|
||||
|
||||
#include "geometry/rect2d.hpp"
|
||||
|
||||
@@ -34,10 +33,6 @@ enum class RoadShieldType
|
||||
Generic_Pill_Blue_Bordered,
|
||||
Generic_Pill_Red_Bordered,
|
||||
Generic_Pill_Orange_Bordered,
|
||||
Highway_Hexagon_Green,
|
||||
Highway_Hexagon_Blue,
|
||||
Highway_Hexagon_Red,
|
||||
Highway_Hexagon_Turkey,
|
||||
US_Interstate,
|
||||
US_Highway,
|
||||
UK_Highway,
|
||||
@@ -80,7 +75,7 @@ struct RoadShield
|
||||
// Use specific country road shield styles based on mwm feature belongs to.
|
||||
using RoadShieldsSetT = buffer_vector<RoadShield, 2>;
|
||||
RoadShieldsSetT GetRoadShields(FeatureType & f);
|
||||
RoadShieldsSetT GetRoadShields(std::string const & mwmName, std::string const & roadNumber, HighwayClass const & highwayClass);
|
||||
RoadShieldsSetT GetRoadShields(std::string const & mwmName, std::string const & roadNumber);
|
||||
|
||||
// Simple parsing without specific country styles.
|
||||
RoadShieldsSetT GetRoadShields(std::string const & rawRoadNumber);
|
||||
|
||||
@@ -14,7 +14,7 @@ using namespace ftypes;
|
||||
|
||||
bool IsHighway(HighwayClass hwClass, bool isLink)
|
||||
{
|
||||
return (hwClass == HighwayClass::Motorway || hwClass == HighwayClass::Trunk || hwClass == HighwayClass::Primary) && !isLink;
|
||||
return (hwClass == HighwayClass::Trunk || hwClass == HighwayClass::Primary) && !isLink;
|
||||
}
|
||||
|
||||
bool IsSmallRoad(HighwayClass hwClass)
|
||||
@@ -102,7 +102,6 @@ double CalcEstimatedTimeToPass(double const distanceMeters, HighwayClass const h
|
||||
double speedKmph = 0;
|
||||
switch (highwayClass)
|
||||
{
|
||||
case HighwayClass::Motorway: speedKmph = 100.0; break;
|
||||
case HighwayClass::Trunk: speedKmph = 100.0; break;
|
||||
case HighwayClass::Primary: speedKmph = 70.0; break;
|
||||
case HighwayClass::Secondary: speedKmph = 70.0; break;
|
||||
|
||||
@@ -21,7 +21,6 @@ openlr::FunctionalRoadClass HighwayClassToFunctionalRoadClass(ftypes::HighwayCla
|
||||
{
|
||||
switch (hwClass)
|
||||
{
|
||||
case ftypes::HighwayClass::Motorway: return openlr::FunctionalRoadClass::FRC0;
|
||||
case ftypes::HighwayClass::Trunk: return openlr::FunctionalRoadClass::FRC0;
|
||||
case ftypes::HighwayClass::Primary: return openlr::FunctionalRoadClass::FRC1;
|
||||
case ftypes::HighwayClass::Secondary: return openlr::FunctionalRoadClass::FRC2;
|
||||
@@ -49,10 +48,11 @@ optional<Score> GetFrcScore(Graph::Edge const & e, FunctionalRoadClass functiona
|
||||
switch (functionalRoadClass)
|
||||
{
|
||||
case FunctionalRoadClass::FRC0:
|
||||
return hwClass == HighwayClass::Motorway || hwClass == HighwayClass::Trunk ? optional<Score>(kMaxScoreForFrc) : nullopt;
|
||||
// Note. HighwayClass::Trunk means motorway, motorway_link, trunk or trunk_link.
|
||||
return hwClass == HighwayClass::Trunk ? optional<Score>(kMaxScoreForFrc) : nullopt;
|
||||
|
||||
case FunctionalRoadClass::FRC1:
|
||||
return (HighwayClass::Motorway || hwClass == HighwayClass::Trunk || hwClass == HighwayClass::Primary) ? optional<Score>(kMaxScoreForFrc)
|
||||
return (hwClass == HighwayClass::Trunk || hwClass == HighwayClass::Primary) ? optional<Score>(kMaxScoreForFrc)
|
||||
: nullopt;
|
||||
|
||||
case FunctionalRoadClass::FRC2:
|
||||
|
||||