Compare commits
12 Commits
v2025.11.0
...
x7z4w-geon
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f5b68183c9 | ||
|
|
74122e2fae | ||
|
|
c21afb27bd | ||
|
|
dea24b5681 | ||
|
|
51859424ea | ||
|
|
b5404cc2c6 | ||
|
|
b8e0ad3b3e | ||
|
|
23b5d92d4f | ||
|
|
99f3639b9c | ||
|
|
e0f8e043bb | ||
|
|
7f4ff8b606 | ||
|
|
7132ff2ed8 |
@@ -1,11 +1,13 @@
|
||||
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;
|
||||
@@ -35,7 +37,11 @@ public class OsmUploadWork extends Worker
|
||||
if (Editor.nativeHasSomethingToUpload() && OsmOAuth.isAuthorized())
|
||||
{
|
||||
final Constraints c = new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build();
|
||||
final OneTimeWorkRequest wr = new OneTimeWorkRequest.Builder(OsmUploadWork.class).setConstraints(c).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();
|
||||
WorkManager.getInstance(context).beginUniqueWork("UploadOsmChanges", ExistingWorkPolicy.KEEP, wr).enqueue();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
<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,6 +30,7 @@
|
||||
<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>
|
||||
@@ -92,6 +93,7 @@
|
||||
<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>
|
||||
@@ -121,6 +123,7 @@
|
||||
<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>
|
||||
@@ -657,6 +660,7 @@
|
||||
<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>
|
||||
@@ -1251,6 +1255,7 @@
|
||||
<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,6 +62,7 @@
|
||||
"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",
|
||||
@@ -128,6 +129,7 @@
|
||||
"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",
|
||||
@@ -419,6 +421,7 @@
|
||||
"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",
|
||||
@@ -450,6 +453,7 @@
|
||||
"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",
|
||||
@@ -459,6 +463,7 @@
|
||||
"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,6 +258,10 @@
|
||||
<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" />
|
||||
@@ -1058,6 +1062,9 @@
|
||||
<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>
|
||||
@@ -1126,6 +1133,7 @@
|
||||
<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>
|
||||
@@ -1197,6 +1205,9 @@
|
||||
<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" />
|
||||
@@ -1226,6 +1237,9 @@
|
||||
<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>
|
||||
@@ -1288,6 +1302,9 @@
|
||||
<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;
|
||||
deprecated:boundary|administrative|suburb:04.2024;[boundary=administrative][border_type=suburb];x;name;int_name;522;
|
||||
amenity|payment_centre;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;
|
||||
deprecated:amenity|speed_trap:10.2021;542;highway|speed_camera
|
||||
leisure|indoor_play;542;
|
||||
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;
|
||||
deprecated:boundary|administrative|4|state:01.2022;[boundary=administrative][admin_level=4][border_type=state];x;name;int_name;736;boundary|administrative|4
|
||||
shop|telecommunication;736;
|
||||
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,8 +980,7 @@ 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;
|
||||
# service=bus/busway is deprecated in OSM
|
||||
deprecated:highway|service|busway:10.2023;[highway=service][service=busway];x;name;int_name;857;highway|busway
|
||||
amenity|mobile_money_agent;857;
|
||||
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;
|
||||
@@ -989,7 +988,7 @@ natural|salt_pond;861;landuse|salt_pond
|
||||
amenity|conference_centre;862;
|
||||
amenity|exhibition_centre;863;
|
||||
deprecated:railway|siding|tunnel:06.2023;864;x
|
||||
deprecated:railway|yard|tunnel:06.2023;865;x
|
||||
amenity|boat_rental;865;
|
||||
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
data/styles/default/dark/symbols/boat_rental-m.svg
Normal file
@@ -0,0 +1 @@
|
||||
<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>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
1
data/styles/default/dark/symbols/indoor_play-m.svg
Normal file
@@ -0,0 +1 @@
|
||||
<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>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -1 +1 @@
|
||||
<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>
|
||||
<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>
|
||||
|
Before Width: | Height: | Size: 878 B After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1 @@
|
||||
<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>
|
||||
|
After Width: | Height: | Size: 917 B |
@@ -0,0 +1 @@
|
||||
<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>
|
||||
|
After Width: | Height: | Size: 917 B |
@@ -0,0 +1 @@
|
||||
<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>
|
||||
|
After Width: | Height: | Size: 917 B |
@@ -0,0 +1 @@
|
||||
<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>
|
||||
|
After Width: | Height: | Size: 917 B |
@@ -0,0 +1 @@
|
||||
<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>
|
||||
|
After Width: | Height: | Size: 917 B |
@@ -0,0 +1 @@
|
||||
<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>
|
||||
|
After Width: | Height: | Size: 917 B |
@@ -0,0 +1 @@
|
||||
<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>
|
||||
|
After Width: | Height: | Size: 920 B |
@@ -0,0 +1 @@
|
||||
<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>
|
||||
|
After Width: | Height: | Size: 920 B |
1
data/styles/default/dark/symbols/slipway-m.svg
Normal file
@@ -0,0 +1 @@
|
||||
<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>
|
||||
|
After Width: | Height: | Size: 741 B |
1
data/styles/default/dark/symbols/train_building-m.svg
Normal file
@@ -0,0 +1 @@
|
||||
<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>
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
@@ -844,6 +844,7 @@ 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],
|
||||
@@ -865,9 +866,11 @@ 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],
|
||||
@@ -921,6 +924,8 @@ 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],
|
||||
@@ -1419,6 +1424,9 @@ 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;}
|
||||
|
||||
@@ -1452,6 +1460,9 @@ 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],
|
||||
@@ -1470,6 +1481,11 @@ 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],
|
||||
@@ -1538,6 +1554,9 @@ 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;}
|
||||
|
||||
@@ -1562,6 +1581,8 @@ 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],
|
||||
@@ -1708,6 +1729,7 @@ 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],
|
||||
@@ -1874,6 +1896,7 @@ 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;}
|
||||
@@ -2020,6 +2043,7 @@ 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,6 +1,7 @@
|
||||
/* 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],
|
||||
@@ -56,6 +57,7 @@ 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],
|
||||
@@ -118,9 +120,11 @@ 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 caption z17-)
|
||||
building-train_station # area z14- (also has icon z17-, caption(optional) z17-)
|
||||
=== 130
|
||||
|
||||
piste:type-connection # line z15-
|
||||
|
||||
@@ -773,6 +773,7 @@ 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
|
||||
@@ -866,6 +867,7 @@ 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-)
|
||||
@@ -916,7 +918,7 @@ natural-wetland-tidalflat # caption z16- (also has are
|
||||
tourism-picnic_site # icon z16- (also has caption(optional) z16-)
|
||||
=== 1800
|
||||
|
||||
building-train_station # caption z17- (also has area z14-)
|
||||
building-train_station # icon z17- (also has caption(optional) z17-, area z14-)
|
||||
railway-level_crossing # icon z17-
|
||||
=== 1700
|
||||
|
||||
@@ -966,8 +968,10 @@ 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-)
|
||||
@@ -1200,6 +1204,7 @@ 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-)
|
||||
@@ -1316,7 +1321,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 # caption z17-
|
||||
leisure-slipway # icon z17- (also has caption(optional) 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-)
|
||||
@@ -1810,6 +1815,7 @@ 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
|
||||
@@ -1899,6 +1905,7 @@ 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-)
|
||||
@@ -1934,6 +1941,9 @@ 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
|
||||
|
||||
@@ -1977,8 +1987,10 @@ 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-)
|
||||
@@ -2188,6 +2200,7 @@ 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-)
|
||||
@@ -2278,6 +2291,7 @@ 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
data/styles/default/light/symbols/boat_rental-m.svg
Normal file
@@ -0,0 +1 @@
|
||||
<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>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
1
data/styles/default/light/symbols/indoor_play-m.svg
Normal file
@@ -0,0 +1 @@
|
||||
<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>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -1 +1 @@
|
||||
<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>
|
||||
<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>
|
||||
|
Before Width: | Height: | Size: 878 B After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1 @@
|
||||
<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>
|
||||
|
After Width: | Height: | Size: 917 B |
@@ -0,0 +1 @@
|
||||
<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>
|
||||
|
After Width: | Height: | Size: 917 B |
@@ -0,0 +1 @@
|
||||
<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>
|
||||
|
After Width: | Height: | Size: 917 B |
@@ -0,0 +1 @@
|
||||
<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>
|
||||
|
After Width: | Height: | Size: 917 B |
@@ -0,0 +1 @@
|
||||
<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>
|
||||
|
After Width: | Height: | Size: 917 B |
@@ -0,0 +1 @@
|
||||
<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>
|
||||
|
After Width: | Height: | Size: 917 B |
@@ -0,0 +1 @@
|
||||
<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>
|
||||
|
After Width: | Height: | Size: 905 B |
@@ -0,0 +1 @@
|
||||
<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>
|
||||
|
After Width: | Height: | Size: 905 B |
1
data/styles/default/light/symbols/slipway-m.svg
Normal file
@@ -0,0 +1 @@
|
||||
<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>
|
||||
|
After Width: | Height: | Size: 744 B |
1
data/styles/default/light/symbols/train_building-m.svg
Normal file
@@ -0,0 +1 @@
|
||||
<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>
|
||||
|
After 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 caption z17-)
|
||||
building-train_station # area z14- (also has icon z17-, caption(optional) z17-)
|
||||
=== 130
|
||||
|
||||
piste:type-connection # line z15-
|
||||
|
||||
@@ -773,6 +773,7 @@ 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
|
||||
@@ -866,6 +867,7 @@ 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-)
|
||||
@@ -916,7 +918,7 @@ natural-wetland-tidalflat # caption z16- (also has are
|
||||
tourism-picnic_site # icon z14- (also has caption(optional) z14-)
|
||||
=== 1800
|
||||
|
||||
building-train_station # caption z17- (also has area z14-)
|
||||
building-train_station # icon z17- (also has caption(optional) z17-, area z14-)
|
||||
railway-level_crossing # icon z17-
|
||||
=== 1700
|
||||
|
||||
@@ -966,8 +968,10 @@ 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-)
|
||||
@@ -1201,6 +1205,7 @@ 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-)
|
||||
@@ -1319,7 +1324,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 # caption z17-
|
||||
leisure-slipway # icon z17- (also has caption(optional) 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-)
|
||||
@@ -1813,6 +1818,7 @@ 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
|
||||
@@ -1902,6 +1908,7 @@ 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-)
|
||||
@@ -1937,6 +1944,9 @@ 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
|
||||
|
||||
@@ -1980,8 +1990,10 @@ 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-)
|
||||
@@ -2193,6 +2205,7 @@ 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-)
|
||||
@@ -2284,6 +2297,7 @@ 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
|
||||
|
||||
@@ -24,7 +24,11 @@ static inline DeeplinkUrlType deeplinkUrlType(url_scheme::ParsedMapApi::UrlType
|
||||
|
||||
+ (DeeplinkUrlType)parseAndSetApiURL:(NSURL *)url {
|
||||
Framework &f = GetFramework();
|
||||
return deeplinkUrlType(f.ParseAndSetApiURL(url.absoluteString.UTF8String));
|
||||
if ([url.scheme isEqual: @"geo-navigation"]) {
|
||||
return deeplinkUrlType(f.ParseGeoNav(url.absoluteString.UTF8String, f));
|
||||
} else {
|
||||
return deeplinkUrlType(f.ParseAndSetApiURL(url.absoluteString.UTF8String));
|
||||
}
|
||||
}
|
||||
|
||||
+ (void)executeMapApiRequest {
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
<string>CloudDocuments</string>
|
||||
<string>CloudKit</string>
|
||||
</array>
|
||||
<key>com.apple.developer.navigation-app</key>
|
||||
<true/>
|
||||
<key>com.apple.developer.ubiquity-container-identifiers</key>
|
||||
<array>
|
||||
<string>iCloud.app.comaps.debug</string>
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
<string>CloudDocuments</string>
|
||||
<string>CloudKit</string>
|
||||
</array>
|
||||
<key>com.apple.developer.navigation-app</key>
|
||||
<true/>
|
||||
<key>com.apple.developer.ubiquity-container-identifiers</key>
|
||||
<array>
|
||||
<string>iCloud.app.comaps</string>
|
||||
|
||||
@@ -65,6 +65,7 @@
|
||||
<string>mapsme</string>
|
||||
<string>ge0</string>
|
||||
<string>geo</string>
|
||||
<string>geo-navigation</string>
|
||||
<string>om</string>
|
||||
<string>mapswithmepro</string>
|
||||
</array>
|
||||
@@ -89,7 +90,7 @@
|
||||
<true/>
|
||||
<key>NSExceptionDomains</key>
|
||||
<dict>
|
||||
<key>comaps.at</key>
|
||||
<key>comaps.app</key>
|
||||
<dict>
|
||||
<key>NSExceptionAllowsInsecureHTTPLoads</key>
|
||||
<true/>
|
||||
@@ -98,7 +99,7 @@
|
||||
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>comaps.app</key>
|
||||
<key>comaps.at</key>
|
||||
<dict>
|
||||
<key>NSExceptionAllowsInsecureHTTPLoads</key>
|
||||
<true/>
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
switch urlType {
|
||||
case .route:
|
||||
if let adapter = DeepLinkRouteStrategyAdapter(url) {
|
||||
MWMRouter.buildApiRoute(with: adapter.type, start: adapter.p1, finish: adapter.p2)
|
||||
MWMRouter.buildApiRoute(with: adapter.type, start: adapter.pStart, intermediatePoint: adapter.pIntermediate, finish: adapter.pFinish)
|
||||
MapsAppDelegate.theApp().showMap()
|
||||
return true
|
||||
}
|
||||
|
||||
@@ -6,8 +6,9 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@class MWMRoutePoint;
|
||||
@interface DeepLinkRouteStrategyAdapter : NSObject
|
||||
|
||||
@property(nonatomic, readonly) MWMRoutePoint* p1;
|
||||
@property(nonatomic, readonly) MWMRoutePoint* p2;
|
||||
@property(nonatomic, readonly) MWMRoutePoint* pStart;
|
||||
@property(nonatomic, readonly) MWMRoutePoint* pIntermediate;
|
||||
@property(nonatomic, readonly) MWMRoutePoint* pFinish;
|
||||
@property(nonatomic, readonly) MWMRouterType type;
|
||||
|
||||
- (nullable instancetype)init:(NSURL*)url;
|
||||
|
||||
@@ -11,11 +11,29 @@
|
||||
auto const parsedData = GetFramework().GetParsedRoutingData();
|
||||
auto const points = parsedData.m_points;
|
||||
|
||||
if (points.size() == 2) {
|
||||
_p1 = [[MWMRoutePoint alloc] initWithURLSchemeRoutePoint:points.front()
|
||||
for (auto point: points) {
|
||||
if (point.m_type == RouteMarkType::Start) {
|
||||
_pStart = [[MWMRoutePoint alloc] initWithURLSchemeRoutePoint:point
|
||||
type:MWMRoutePointTypeStart
|
||||
intermediateIndex:0];
|
||||
} else if (point.m_type == RouteMarkType::Finish) {
|
||||
_pFinish = [[MWMRoutePoint alloc] initWithURLSchemeRoutePoint:point
|
||||
type:MWMRoutePointTypeFinish
|
||||
intermediateIndex:0];
|
||||
} else if (point.m_type == RouteMarkType::Intermediate) {
|
||||
_pIntermediate = [[MWMRoutePoint alloc] initWithURLSchemeRoutePoint:point
|
||||
type:MWMRoutePointTypeIntermediate
|
||||
intermediateIndex:0];
|
||||
}
|
||||
}
|
||||
|
||||
if (_pStart && _pFinish) {
|
||||
_type = routerType(parsedData.m_type);
|
||||
} else if (points.size() == 2) {
|
||||
_pStart = [[MWMRoutePoint alloc] initWithURLSchemeRoutePoint:points.front()
|
||||
type:MWMRoutePointTypeStart
|
||||
intermediateIndex:0];
|
||||
_p2 = [[MWMRoutePoint alloc] initWithURLSchemeRoutePoint:points.back()
|
||||
_pFinish = [[MWMRoutePoint alloc] initWithURLSchemeRoutePoint:points.back()
|
||||
type:MWMRoutePointTypeFinish
|
||||
intermediateIndex:0];
|
||||
_type = routerType(parsedData.m_type);
|
||||
|
||||
@@ -56,6 +56,7 @@ typedef void (^MWMImageHeightBlock)(UIImage *, NSString *, NSString *);
|
||||
+ (void)buildToPoint:(MWMRoutePoint *)finish bestRouter:(BOOL)bestRouter;
|
||||
+ (void)buildApiRouteWithType:(MWMRouterType)type
|
||||
startPoint:(MWMRoutePoint *)startPoint
|
||||
intermediatePoint:(MWMRoutePoint *)intermediatePoint
|
||||
finishPoint:(MWMRoutePoint *)finishPoint;
|
||||
+ (void)rebuildWithBestRouter:(BOOL)bestRouter;
|
||||
|
||||
|
||||
@@ -255,6 +255,7 @@ char const *kRenderAltitudeImagesQueueLabel = "mapsme.mwmrouter.renderAltitudeIm
|
||||
|
||||
+ (void)buildApiRouteWithType:(MWMRouterType)type
|
||||
startPoint:(MWMRoutePoint *)startPoint
|
||||
intermediatePoint:(MWMRoutePoint *)intermediatePoint
|
||||
finishPoint:(MWMRoutePoint *)finishPoint {
|
||||
if (!startPoint || !finishPoint)
|
||||
return;
|
||||
@@ -264,6 +265,9 @@ char const *kRenderAltitudeImagesQueueLabel = "mapsme.mwmrouter.renderAltitudeIm
|
||||
auto router = [MWMRouter router];
|
||||
router.isAPICall = YES;
|
||||
[self addPoint:startPoint];
|
||||
if (intermediatePoint) {
|
||||
[self addPoint:intermediatePoint];
|
||||
}
|
||||
[self addPoint:finishPoint];
|
||||
router.isAPICall = NO;
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
"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,6 +26,7 @@
|
||||
"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";
|
||||
@@ -84,6 +85,7 @@
|
||||
"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";
|
||||
@@ -113,6 +115,7 @@
|
||||
"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";
|
||||
@@ -706,6 +709,7 @@
|
||||
"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";
|
||||
@@ -1306,6 +1310,7 @@
|
||||
"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";
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
"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";
|
||||
@@ -96,6 +97,7 @@
|
||||
"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";
|
||||
@@ -125,6 +127,7 @@
|
||||
"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";
|
||||
@@ -736,6 +739,7 @@
|
||||
"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";
|
||||
@@ -1346,6 +1350,7 @@
|
||||
"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";
|
||||
|
||||
@@ -41,6 +41,7 @@ public:
|
||||
return &p.second;
|
||||
return nullptr;
|
||||
}
|
||||
std::vector<Param> const & GetParams() const { return m_params; }
|
||||
|
||||
private:
|
||||
bool Parse(std::string const & url);
|
||||
|
||||
@@ -196,14 +196,22 @@ m2::PointF GetOffset(int offsetX, int offsetY)
|
||||
|
||||
bool IsSymbolRoadShield(ftypes::RoadShield const & shield)
|
||||
{
|
||||
return shield.m_type == ftypes::RoadShieldType::US_Interstate || shield.m_type == ftypes::RoadShieldType::US_Highway || shield.m_type == ftypes::RoadShieldType::Italy_Autostrada;
|
||||
return shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Green || shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Blue || shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Red || shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Turkey || shield.m_type == ftypes::RoadShieldType::US_Interstate || shield.m_type == ftypes::RoadShieldType::US_Highway || shield.m_type == ftypes::RoadShieldType::Italy_Autostrada;
|
||||
}
|
||||
|
||||
std::string GetRoadShieldSymbolName(ftypes::RoadShield const & shield, double fontScale)
|
||||
{
|
||||
ASSERT(IsSymbolRoadShield(shield), ());
|
||||
std::string result = "";
|
||||
if (shield.m_type == ftypes::RoadShieldType::US_Interstate)
|
||||
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)
|
||||
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";
|
||||
@@ -306,6 +314,10 @@ 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::Trunk, HighwayClass::Primary}, kRoadClass0ZoomLevel, df::RoadClass::Class0},
|
||||
{{HighwayClass::Motorway, 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::Trunk;
|
||||
m_map[c.GetTypeByPath({"highway", "motorway_link"})] = HighwayClass::Trunk;
|
||||
m_map[c.GetTypeByPath({"highway", "motorway"})] = HighwayClass::Motorway;
|
||||
m_map[c.GetTypeByPath({"highway", "motorway_link"})] = HighwayClass::Motorway;
|
||||
m_map[c.GetTypeByPath({"highway", "trunk"})] = HighwayClass::Trunk;
|
||||
m_map[c.GetTypeByPath({"highway", "trunk_link"})] = HighwayClass::Trunk;
|
||||
|
||||
@@ -83,6 +83,7 @@ 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,6 +674,7 @@ 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::Trunk, ());
|
||||
TEST_EQUAL(ftypes::GetHighwayClass(types2), ftypes::HighwayClass::Motorway, ());
|
||||
|
||||
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) const = 0;
|
||||
virtual RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const = 0;
|
||||
|
||||
RoadShieldType FindNetworkShield(std::string network) const
|
||||
{
|
||||
@@ -127,18 +127,20 @@ 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);
|
||||
shield = ParseRoadShield(rawText, index);
|
||||
}
|
||||
else
|
||||
{
|
||||
shield = ParseRoadShield(rawText.substr(slashPos + 1));
|
||||
shield = ParseRoadShield(rawText.substr(slashPos + 1), index);
|
||||
// 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
|
||||
@@ -176,7 +178,7 @@ class USRoadShieldParser : public RoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit USRoadShieldParser(std::string const & baseRoadNumber) : RoadShieldParser(baseRoadNumber) {}
|
||||
RoadShield ParseRoadShield(std::string_view rawText) const override
|
||||
RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const override
|
||||
{
|
||||
std::string shieldText(rawText);
|
||||
|
||||
@@ -236,7 +238,7 @@ class IndiaRoadShieldParser : public RoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit IndiaRoadShieldParser(std::string const & baseRoadNumber) : RoadShieldParser(baseRoadNumber) {}
|
||||
RoadShield ParseRoadShield(std::string_view rawText) const override
|
||||
RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const override
|
||||
{
|
||||
std::string shieldText(rawText);
|
||||
|
||||
@@ -269,7 +271,7 @@ public:
|
||||
, m_type(defaultType)
|
||||
{}
|
||||
|
||||
RoadShield ParseRoadShield(std::string_view rawText) const override
|
||||
RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const override
|
||||
{
|
||||
if (rawText.size() > kMaxRoadShieldBytesSize)
|
||||
return RoadShield();
|
||||
@@ -304,7 +306,7 @@ public:
|
||||
, m_defaultType(defaultType)
|
||||
{}
|
||||
|
||||
RoadShield ParseRoadShield(std::string_view rawText) const override
|
||||
RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const override
|
||||
{
|
||||
if (rawText.size() > kMaxRoadShieldBytesSize)
|
||||
return RoadShield();
|
||||
@@ -329,6 +331,72 @@ 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).
|
||||
@@ -354,7 +422,7 @@ public:
|
||||
, m_types(std::move(types))
|
||||
{}
|
||||
|
||||
RoadShield ParseRoadShield(std::string_view rawText) const override
|
||||
RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const override
|
||||
{
|
||||
if (rawText.size() > kMaxRoadShieldBytesSize)
|
||||
return RoadShield();
|
||||
@@ -403,7 +471,7 @@ public:
|
||||
, m_defaultType(defaultType)
|
||||
{}
|
||||
|
||||
RoadShield ParseRoadShield(std::string_view rawText) const override
|
||||
RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const override
|
||||
{
|
||||
uint32_t constexpr kMaxRoadShieldSymbolsSize = 4 * kMaxRoadShieldBytesSize;
|
||||
|
||||
@@ -429,14 +497,15 @@ private:
|
||||
|
||||
// Implementations of "ref" parses for some countries.
|
||||
|
||||
class AustriaRoadShieldParser : public SimpleRoadShieldParser
|
||||
class AustriaRoadShieldParser : public HighwayClassRoadShieldParser
|
||||
{
|
||||
public:
|
||||
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}})
|
||||
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}})
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -454,7 +523,7 @@ class GreeceRoadShieldParser : public SimpleRoadShieldParser
|
||||
public:
|
||||
explicit GreeceRoadShieldParser(std::string const & baseRoadNumber)
|
||||
: SimpleRoadShieldParser(baseRoadNumber,
|
||||
{{"Α", RoadShieldType::Generic_Green}, {"Ε", RoadShieldType::Generic_Blue}})
|
||||
{{"Α", RoadShieldType::Highway_Hexagon_Green}, {"Ε", RoadShieldType::Generic_Blue}})
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -480,6 +549,15 @@ 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:
|
||||
@@ -524,7 +602,7 @@ class SerbiaRoadShieldParser : public SimpleRoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit SerbiaRoadShieldParser(std::string const & baseRoadNumber)
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Generic_Green}})
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Highway_Hexagon_Green}})
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -540,7 +618,7 @@ class SloveniaRoadShieldParser : public SimpleRoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit SloveniaRoadShieldParser(std::string const & baseRoadNumber)
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Generic_Green}})
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Highway_Hexagon_Green}})
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -548,7 +626,7 @@ class SwitzerlandRoadShieldParser : public SimpleRoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit SwitzerlandRoadShieldParser(std::string const & baseRoadNumber)
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Generic_Red}})
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Highway_Hexagon_Red}})
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -556,7 +634,7 @@ class LiechtensteinRoadShieldParser : public SimpleRoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit LiechtensteinRoadShieldParser(std::string const & baseRoadNumber)
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Generic_Red}})
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Highway_Hexagon_Red}})
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -576,11 +654,16 @@ public:
|
||||
{}
|
||||
};
|
||||
|
||||
class UKRoadShieldParser : public SimpleRoadShieldParser
|
||||
class UKRoadShieldParser : public HighwayClassRoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit UKRoadShieldParser(std::string const & baseRoadNumber)
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"M", RoadShieldType::Generic_Blue}, {"A", RoadShieldType::UK_Highway}})
|
||||
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}})
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -596,14 +679,17 @@ public:
|
||||
{}
|
||||
};
|
||||
|
||||
class GermanyRoadShieldParser : public SimpleRoadShieldParser
|
||||
class GermanyRoadShieldParser : public HighwayClassRoadShieldParser
|
||||
{
|
||||
public:
|
||||
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}})
|
||||
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}})
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -710,7 +796,7 @@ class MexicoRoadShieldParser : public RoadShieldParser
|
||||
public:
|
||||
explicit MexicoRoadShieldParser(std::string const & baseRoadNumber) : RoadShieldParser(baseRoadNumber) {}
|
||||
|
||||
RoadShield ParseRoadShield(std::string_view rawText) const override
|
||||
RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const override
|
||||
{
|
||||
std::string shieldText(rawText);
|
||||
|
||||
@@ -753,6 +839,10 @@ 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()));
|
||||
@@ -761,19 +851,19 @@ RoadShieldsSetT GetRoadShields(FeatureType & f)
|
||||
if (underlinePos != std::string::npos)
|
||||
mwmName = mwmName.substr(0, underlinePos);
|
||||
|
||||
return GetRoadShields(mwmName, ref);
|
||||
return GetRoadShields(mwmName, ref, highwayClass);
|
||||
}
|
||||
|
||||
RoadShieldsSetT GetRoadShields(std::string const & mwmName, std::string const & roadNumber)
|
||||
RoadShieldsSetT GetRoadShields(std::string const & mwmName, std::string const & roadNumber, HighwayClass const & highwayClass)
|
||||
{
|
||||
if (mwmName == "US")
|
||||
return USRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "UK")
|
||||
return UKRoadShieldParser(roadNumber).GetRoadShields();
|
||||
return UKRoadShieldParser(roadNumber, highwayClass).GetRoadShields();
|
||||
if (mwmName == "India")
|
||||
return IndiaRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "Austria")
|
||||
return AustriaRoadShieldParser(roadNumber).GetRoadShields();
|
||||
return AustriaRoadShieldParser(roadNumber, highwayClass).GetRoadShields();
|
||||
if (mwmName == "Belgium")
|
||||
return BelgiumRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "Greece")
|
||||
@@ -782,6 +872,8 @@ 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")
|
||||
@@ -805,7 +897,7 @@ RoadShieldsSetT GetRoadShields(std::string const & mwmName, std::string const &
|
||||
if (mwmName == "France")
|
||||
return FranceRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "Germany")
|
||||
return GermanyRoadShieldParser(roadNumber).GetRoadShields();
|
||||
return GermanyRoadShieldParser(roadNumber, highwayClass).GetRoadShields();
|
||||
if (mwmName == "Spain")
|
||||
return SpainRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "Ukraine")
|
||||
@@ -874,6 +966,10 @@ 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,6 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "indexer/feature.hpp"
|
||||
#include "indexer/ftypes_matcher.hpp"
|
||||
|
||||
#include "geometry/rect2d.hpp"
|
||||
|
||||
@@ -33,6 +34,10 @@ 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,
|
||||
@@ -75,7 +80,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);
|
||||
RoadShieldsSetT GetRoadShields(std::string const & mwmName, std::string const & roadNumber, HighwayClass const & highwayClass);
|
||||
|
||||
// Simple parsing without specific country styles.
|
||||
RoadShieldsSetT GetRoadShields(std::string const & rawRoadNumber);
|
||||
|
||||
@@ -585,6 +585,13 @@ public:
|
||||
return m_parsedMapApi.SetUrlAndParse(url);
|
||||
}
|
||||
|
||||
#if defined(OMIM_OS_MAC) || defined(OMIM_OS_IPHONE)
|
||||
url_scheme::ParsedMapApi::UrlType ParseGeoNav(std::string const & raw, Framework & fm)
|
||||
{
|
||||
return m_parsedMapApi.ParseGeoNav(raw, fm);
|
||||
}
|
||||
#endif
|
||||
|
||||
struct ParsedRoutingData
|
||||
{
|
||||
ParsedRoutingData(std::vector<url_scheme::RoutePoint> const & points, routing::RouterType type)
|
||||
|
||||
@@ -1,8 +1,19 @@
|
||||
#if defined(OMIM_OS_MAC) || defined(OMIM_OS_IPHONE)
|
||||
#include "platform/preferred_languages.hpp"
|
||||
#endif
|
||||
|
||||
#include "map/mwm_url.hpp"
|
||||
|
||||
#include "map/api_mark_point.hpp"
|
||||
#include "map/bookmark_manager.hpp"
|
||||
#include "map/framework.hpp"
|
||||
#if defined(OMIM_OS_MAC) || defined(OMIM_OS_IPHONE)
|
||||
#include "map/everywhere_search_params.hpp"
|
||||
#include "map/routing_manager.hpp"
|
||||
#include "map/routing_mark.hpp"
|
||||
|
||||
#include "search/result.hpp"
|
||||
#endif
|
||||
|
||||
#include "ge0/geo_url_parser.hpp"
|
||||
#include "ge0/parser.hpp"
|
||||
@@ -17,8 +28,9 @@
|
||||
#include "base/scope_guard.hpp"
|
||||
#include "base/string_utils.hpp"
|
||||
|
||||
#include <array>
|
||||
#include <tuple>
|
||||
#if defined(OMIM_OS_MAC) || defined(OMIM_OS_IPHONE)
|
||||
#include <future>
|
||||
#endif
|
||||
|
||||
namespace url_scheme
|
||||
{
|
||||
@@ -238,6 +250,131 @@ ParsedMapApi::UrlType ParsedMapApi::SetUrlAndParse(std::string const & raw)
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
||||
#if defined(OMIM_OS_MAC) || defined(OMIM_OS_IPHONE)
|
||||
ParsedMapApi::UrlType ParsedMapApi::ParseGeoNav(std::string const & raw, Framework & fm)
|
||||
{
|
||||
Reset();
|
||||
SCOPE_GUARD(guard, [this]
|
||||
{
|
||||
if (m_requestType == UrlType::Incorrect)
|
||||
Reset();
|
||||
});
|
||||
|
||||
url::Url const url(raw);
|
||||
|
||||
if (url.GetHost() == "place")
|
||||
{
|
||||
auto const latLon = url.GetParamValue("coordinate");
|
||||
auto const addr = url.GetParamValue("address");
|
||||
|
||||
if (latLon)
|
||||
{
|
||||
auto const tokens = strings::Tokenize(*latLon, ",");
|
||||
double lat;
|
||||
double lon;
|
||||
|
||||
if (tokens.size() != 2 || !strings::to_double(tokens[0], lat) || !strings::to_double(tokens[1], lon) ||
|
||||
!mercator::ValidLat(lat) || !mercator::ValidLon(lon))
|
||||
{
|
||||
LOG(LWARNING, ("Invalid lat,lon in", raw));
|
||||
return m_requestType = UrlType::Incorrect;
|
||||
}
|
||||
|
||||
if (addr)
|
||||
{
|
||||
m_searchRequest = SearchRequest();
|
||||
m_searchRequest.m_query = *addr;
|
||||
m_centerLatLon = {lat, lon};
|
||||
return m_requestType = UrlType::Search;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
m_centerLatLon = {lat, lon};
|
||||
m_mapPoints.push_back({lat /* m_lat */, lon /* m_lon */, "" /* m_label */, "" /* m_id */, "" /* m_style */});
|
||||
return m_requestType = UrlType::Map;
|
||||
}
|
||||
}
|
||||
|
||||
else if (addr)
|
||||
{
|
||||
m_searchRequest = SearchRequest();
|
||||
m_searchRequest.m_query = *addr;
|
||||
return m_requestType = UrlType::Search;
|
||||
}
|
||||
}
|
||||
|
||||
else if (url.GetHost() == "directions")
|
||||
{
|
||||
auto const source = url.GetParamValue("source");
|
||||
auto const destination = url.GetParamValue("destination");
|
||||
|
||||
if (source)
|
||||
SetRouteMark(*source, fm, RouteMarkType::Finish);
|
||||
|
||||
if (url.GetParamValue("waypoint"))
|
||||
for (auto const & param : url.GetParams())
|
||||
if (param.first == "waypoint")
|
||||
SetRouteMark(param.second, fm, RouteMarkType::Intermediate);
|
||||
|
||||
if (destination)
|
||||
SetRouteMark(*destination, fm, RouteMarkType::Finish);
|
||||
|
||||
if (source || destination)
|
||||
{
|
||||
m_routingType = routing::ToString(routing::GetLastUsedRouter());
|
||||
|
||||
return m_requestType = UrlType::Route;
|
||||
}
|
||||
|
||||
return m_requestType = UrlType::Incorrect;
|
||||
}
|
||||
|
||||
return m_requestType = UrlType::Incorrect;
|
||||
}
|
||||
|
||||
void ParsedMapApi::SetRouteMark(std::string_view const raw, Framework & fm, RouteMarkType const type)
|
||||
{
|
||||
auto const tokens = strings::Tokenize(raw, ",");
|
||||
double lat;
|
||||
double lon;
|
||||
|
||||
if (tokens.size() != 2 || !strings::to_double(tokens[0], lat) || !strings::to_double(tokens[1], lon) ||
|
||||
!mercator::ValidLat(lat) || !mercator::ValidLon(lon))
|
||||
{
|
||||
std::promise<void> signal;
|
||||
std::future<void> future = signal.get_future();
|
||||
|
||||
::search::EverywhereSearchParams params{
|
||||
std::string(raw),
|
||||
languages::GetMostPreferredLang(),
|
||||
{} /* timeout */,
|
||||
false,
|
||||
// m_onResults
|
||||
[this, type = std::move(type), &signal](::search::Results results, std::vector<::search::ProductInfo>)
|
||||
{
|
||||
auto const center = results[0].GetFeatureCenter();
|
||||
RoutePoint p;
|
||||
p.m_type = type;
|
||||
p.m_org = mercator::FromLatLon(mercator::YToLat(center.y), mercator::XToLon(center.x));
|
||||
p.m_name = results[0].GetString();
|
||||
m_routePoints.push_back(p);
|
||||
signal.set_value();
|
||||
}};
|
||||
|
||||
fm.GetSearchAPI().SearchEverywhere(std::move(params));
|
||||
future.wait();
|
||||
}
|
||||
else
|
||||
{
|
||||
RoutePoint p;
|
||||
p.m_org = mercator::FromLatLon(lat, lon);
|
||||
p.m_type = type;
|
||||
m_routePoints.push_back(p);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void ParsedMapApi::ParseMapParam(std::string const & key, std::string const & value, bool & correctOrder)
|
||||
{
|
||||
using namespace map;
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
#pragma once
|
||||
|
||||
#if defined(OMIM_OS_MAC) || defined(OMIM_OS_IPHONE)
|
||||
#include "map/everywhere_search_params.hpp"
|
||||
#include "map/routing_mark.hpp"
|
||||
#endif
|
||||
|
||||
#include "geometry/latlon.hpp"
|
||||
#include "geometry/point2d.hpp"
|
||||
|
||||
@@ -22,9 +27,20 @@ struct MapPoint
|
||||
struct RoutePoint
|
||||
{
|
||||
RoutePoint() = default;
|
||||
#if defined(OMIM_OS_MAC) || defined(OMIM_OS_IPHONE)
|
||||
RoutePoint(m2::PointD const & org, std::string const & name, RouteMarkType type)
|
||||
: m_org(org)
|
||||
, m_name(name)
|
||||
, m_type(type)
|
||||
{}
|
||||
#else
|
||||
RoutePoint(m2::PointD const & org, std::string const & name) : m_org(org), m_name(name) {}
|
||||
#endif
|
||||
m2::PointD m_org = m2::PointD::Zero();
|
||||
std::string m_name;
|
||||
#if defined(OMIM_OS_MAC) || defined(OMIM_OS_IPHONE)
|
||||
RouteMarkType m_type;
|
||||
#endif
|
||||
};
|
||||
|
||||
struct SearchRequest
|
||||
@@ -66,6 +82,9 @@ public:
|
||||
explicit ParsedMapApi(std::string const & url) { SetUrlAndParse(url); }
|
||||
|
||||
UrlType SetUrlAndParse(std::string const & url);
|
||||
#if defined(OMIM_OS_MAC) || defined(OMIM_OS_IPHONE)
|
||||
UrlType ParseGeoNav(std::string const & raw, Framework & fm);
|
||||
#endif
|
||||
UrlType GetRequestType() const { return m_requestType; }
|
||||
std::string const & GetGlobalBackUrl() const { return m_globalBackUrl; }
|
||||
std::string const & GetAppName() const { return m_appName; }
|
||||
@@ -123,6 +142,9 @@ public:
|
||||
|
||||
private:
|
||||
void ParseMapParam(std::string const & key, std::string const & value, bool & correctOrder);
|
||||
#if defined(OMIM_OS_MAC) || defined(OMIM_OS_IPHONE)
|
||||
void SetRouteMark(std::string_view const raw, Framework & fm, RouteMarkType const type);
|
||||
#endif
|
||||
void ParseRouteParam(std::string const & key, std::string const & value, std::vector<std::string_view> & pattern);
|
||||
void ParseSearchParam(std::string const & key, std::string const & value);
|
||||
void ParseInAppFeatureHighlightParam(std::string const & key, std::string const & value);
|
||||
|
||||
@@ -470,10 +470,10 @@ void RoutingManager::OnLocationUpdate(location::GpsInfo const & info)
|
||||
RouterType RoutingManager::GetBestRouter(m2::PointD const & startPoint, m2::PointD const & finalPoint) const
|
||||
{
|
||||
// todo Implement something more sophisticated here (or delete the method).
|
||||
return GetLastUsedRouter();
|
||||
return routing::GetLastUsedRouter();
|
||||
}
|
||||
|
||||
RouterType RoutingManager::GetLastUsedRouter() const
|
||||
RouterType routing::GetLastUsedRouter()
|
||||
{
|
||||
string routerTypeStr;
|
||||
if (!settings::Get(kRouterTypeKey, routerTypeStr))
|
||||
|
||||
@@ -40,6 +40,7 @@ class CountryInfoGetter;
|
||||
namespace routing
|
||||
{
|
||||
class NumMwmIds;
|
||||
RouterType GetLastUsedRouter();
|
||||
}
|
||||
|
||||
class DataSource;
|
||||
@@ -172,7 +173,6 @@ public:
|
||||
m2::PointD GetRouteEndPoint() const { return m_routingSession.GetEndPoint(); }
|
||||
/// Returns the most situable router engine type.
|
||||
routing::RouterType GetBestRouter(m2::PointD const & startPoint, m2::PointD const & finalPoint) const;
|
||||
routing::RouterType GetLastUsedRouter() const;
|
||||
void SetLastUsedRouter(routing::RouterType type);
|
||||
// Sound notifications for turn instructions.
|
||||
void EnableTurnNotifications(bool enable) { m_routingSession.EnableTurnNotifications(enable); }
|
||||
|
||||
@@ -579,6 +579,11 @@ std::string GetCurrentMapLanguage()
|
||||
return languageCode;
|
||||
}
|
||||
|
||||
std::string GetMostPreferredLang()
|
||||
{
|
||||
return std::string(StringUtf8Multilang::GetLangByCode(GetPreferredLangIndexes()[0]));
|
||||
}
|
||||
|
||||
std::vector<int8_t> GetPreferredLangIndexes()
|
||||
{
|
||||
std::vector<int8_t> langs = {};
|
||||
|
||||
@@ -25,6 +25,7 @@ std::string GetCurrentMapTwine();
|
||||
std::string Normalize(std::string_view lang);
|
||||
std::string GetCurrentNorm();
|
||||
std::string GetCurrentMapLanguage();
|
||||
std::string GetMostPreferredLang();
|
||||
std::vector<int8_t> GetPreferredLangIndexes();
|
||||
|
||||
buffer_vector<std::string, 4> const & GetSystemPreferred();
|
||||
|
||||
@@ -49,6 +49,13 @@ bool FromString<string>(string const & strIn, string & strOut)
|
||||
return true;
|
||||
}
|
||||
|
||||
template <>
|
||||
bool FromString<std::string_view>(string const & strIn, std::string_view & strOut)
|
||||
{
|
||||
strOut = strIn;
|
||||
return true;
|
||||
}
|
||||
|
||||
namespace impl
|
||||
{
|
||||
template <class T, size_t N>
|
||||
|
||||
@@ -14,7 +14,7 @@ using namespace ftypes;
|
||||
|
||||
bool IsHighway(HighwayClass hwClass, bool isLink)
|
||||
{
|
||||
return (hwClass == HighwayClass::Trunk || hwClass == HighwayClass::Primary) && !isLink;
|
||||
return (hwClass == HighwayClass::Motorway || hwClass == HighwayClass::Trunk || hwClass == HighwayClass::Primary) && !isLink;
|
||||
}
|
||||
|
||||
bool IsSmallRoad(HighwayClass hwClass)
|
||||
@@ -102,6 +102,7 @@ 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;
|
||||
|
||||
@@ -130,11 +130,13 @@ void QuerySaver::Deserialize(string const & data)
|
||||
{
|
||||
Length localeLength = ReadPrimitiveFromSource<Length>(reader);
|
||||
vector<char> locale(localeLength);
|
||||
reader.Read(&locale[0], localeLength);
|
||||
Length stringLength = ReadPrimitiveFromSource<Length>(reader);
|
||||
vector<char> str(stringLength);
|
||||
reader.Read(&str[0], stringLength);
|
||||
m_topQueries.emplace_back(make_pair(string(&locale[0], localeLength), string(&str[0], stringLength)));
|
||||
if (locale.size() > 0) {
|
||||
reader.Read(&locale[0], localeLength);
|
||||
Length stringLength = ReadPrimitiveFromSource<Length>(reader);
|
||||
vector<char> str(stringLength);
|
||||
reader.Read(&str[0], stringLength);
|
||||
m_topQueries.emplace_back(make_pair(string(&locale[0], localeLength), string(&str[0], stringLength)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ 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;
|
||||
@@ -48,11 +49,10 @@ optional<Score> GetFrcScore(Graph::Edge const & e, FunctionalRoadClass functiona
|
||||
switch (functionalRoadClass)
|
||||
{
|
||||
case FunctionalRoadClass::FRC0:
|
||||
// Note. HighwayClass::Trunk means motorway, motorway_link, trunk or trunk_link.
|
||||
return hwClass == HighwayClass::Trunk ? optional<Score>(kMaxScoreForFrc) : nullopt;
|
||||
return hwClass == HighwayClass::Motorway || hwClass == HighwayClass::Trunk ? optional<Score>(kMaxScoreForFrc) : nullopt;
|
||||
|
||||
case FunctionalRoadClass::FRC1:
|
||||
return (hwClass == HighwayClass::Trunk || hwClass == HighwayClass::Primary) ? optional<Score>(kMaxScoreForFrc)
|
||||
return (HighwayClass::Motorway || hwClass == HighwayClass::Trunk || hwClass == HighwayClass::Primary) ? optional<Score>(kMaxScoreForFrc)
|
||||
: nullopt;
|
||||
|
||||
case FunctionalRoadClass::FRC2:
|
||||
|
||||