forked from organicmaps/organicmaps
[generator] Additional process for ferry=* types.
Signed-off-by: Viktor Govako <viktor.govako@gmail.com>
This commit is contained in:
parent
f942421bec
commit
393a85c50e
1 changed files with 28 additions and 6 deletions
|
@ -738,10 +738,6 @@ void PostprocessElement(OsmElement * p, FeatureBuilderParams & params)
|
|||
bool railwayDone = false;
|
||||
bool ferryDone = false;
|
||||
|
||||
bool addOneway = false;
|
||||
bool noOneway = false;
|
||||
bool yesMotorFerry = false;
|
||||
|
||||
// Get a copy of source types, because we will modify params in the loop;
|
||||
FeatureBuilderParams::Types const vTypes = params.m_types;
|
||||
|
||||
|
@ -749,6 +745,9 @@ void PostprocessElement(OsmElement * p, FeatureBuilderParams & params)
|
|||
{
|
||||
if (!highwayDone && types.IsHighway(vTypes[i]))
|
||||
{
|
||||
bool addOneway = false;
|
||||
bool noOneway = false;
|
||||
|
||||
TagProcessor(p).ApplyRules({
|
||||
{"oneway", "yes", [&addOneway] { addOneway = true; }},
|
||||
{"oneway", "1", [&addOneway] { addOneway = true; }},
|
||||
|
@ -803,17 +802,40 @@ void PostprocessElement(OsmElement * p, FeatureBuilderParams & params)
|
|||
|
||||
if (!ferryDone && types.IsFerry(vTypes[i]))
|
||||
{
|
||||
bool yesMotorFerry = false;
|
||||
bool noMotorFerry = false;
|
||||
|
||||
TagProcessor(p).ApplyRules({
|
||||
{"foot", "!", [¶ms] { params.AddType(types.Get(CachedTypes::Type::NoFoot)); }},
|
||||
{"foot", "~", [¶ms] { params.AddType(types.Get(CachedTypes::Type::YesFoot)); }},
|
||||
{"ferry", "footway", [¶ms] { params.AddType(types.Get(CachedTypes::Type::YesFoot)); }},
|
||||
{"ferry", "pedestrian", [¶ms] { params.AddType(types.Get(CachedTypes::Type::YesFoot)); }},
|
||||
{"ferry", "path", [¶ms] {
|
||||
params.AddType(types.Get(CachedTypes::Type::YesFoot));
|
||||
params.AddType(types.Get(CachedTypes::Type::YesBicycle));
|
||||
}},
|
||||
|
||||
{"bicycle", "!", [¶ms] { params.AddType(types.Get(CachedTypes::Type::NoBicycle)); }},
|
||||
{"bicycle", "~", [¶ms] { params.AddType(types.Get(CachedTypes::Type::YesBicycle)); }},
|
||||
|
||||
// Check for explicit no-tag.
|
||||
{"motor_vehicle", "!", [&noMotorFerry] { noMotorFerry = true; }},
|
||||
{"motorcar", "!", [&noMotorFerry] { noMotorFerry = true; }},
|
||||
|
||||
{"motor_vehicle", "yes", [&yesMotorFerry] { yesMotorFerry = true; }},
|
||||
{"motorcar", "yes", [&yesMotorFerry] { yesMotorFerry = true; }},
|
||||
{"ferry", "trunk", [&yesMotorFerry] { yesMotorFerry = true; }},
|
||||
{"ferry", "primary", [&yesMotorFerry] { yesMotorFerry = true; }},
|
||||
{"ferry", "secondary", [&yesMotorFerry] { yesMotorFerry = true; }},
|
||||
{"ferry", "tertiary", [&yesMotorFerry] { yesMotorFerry = true; }},
|
||||
{"ferry", "residential", [&yesMotorFerry] { yesMotorFerry = true; }},
|
||||
{"ferry", "service", [&yesMotorFerry] { yesMotorFerry = true; }},
|
||||
{"ferry", "unclassified", [&yesMotorFerry] { yesMotorFerry = true; }},
|
||||
{"ferry", "track", [&yesMotorFerry] { yesMotorFerry = true; }},
|
||||
});
|
||||
|
||||
// For car routing 'motorcar' tag should be explicitly defined.
|
||||
params.AddType(types.Get(yesMotorFerry ? CachedTypes::Type::YesCar : CachedTypes::Type::NoCar));
|
||||
// Car routing for ferries should be explicitly defined.
|
||||
params.AddType(types.Get(!noMotorFerry && yesMotorFerry ? CachedTypes::Type::YesCar : CachedTypes::Type::NoCar));
|
||||
|
||||
ferryDone = true;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue