forked from organicmaps/organicmaps-tmp
Fix coastlines generation.
This commit is contained in:
parent
5a64fa18b9
commit
e1b336bcb9
2 changed files with 13 additions and 7 deletions
|
@ -373,7 +373,7 @@ public:
|
|||
|
||||
}
|
||||
|
||||
template <class TNodesHolder, template <class, class> class TParser>
|
||||
template <class TNodesHolder>
|
||||
bool GenerateImpl(GenerateInfo & info)
|
||||
{
|
||||
try
|
||||
|
@ -385,7 +385,8 @@ bool GenerateImpl(GenerateInfo & info)
|
|||
holder.LoadIndex();
|
||||
|
||||
MainFeaturesEmitter bucketer(info);
|
||||
TParser<MainFeaturesEmitter, holder_t> parser(bucketer, holder);
|
||||
SecondPassParserUsual<MainFeaturesEmitter, holder_t> parser(
|
||||
bucketer, holder, info.m_makeCoasts ? classif().GetCoastType() : 0);
|
||||
ParseXMLFromStdIn(parser);
|
||||
|
||||
bucketer.Finish();
|
||||
|
@ -403,9 +404,9 @@ bool GenerateImpl(GenerateInfo & info)
|
|||
bool GenerateFeatures(GenerateInfo & info, bool lightNodes)
|
||||
{
|
||||
if (lightNodes)
|
||||
return GenerateImpl<points_in_map, SecondPassParserUsual>(info);
|
||||
return GenerateImpl<points_in_map>(info);
|
||||
else
|
||||
return GenerateImpl<points_in_file, SecondPassParserUsual>(info);
|
||||
return GenerateImpl<points_in_file>(info);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -310,6 +310,8 @@ class SecondPassParserUsual : public SecondPassParserBase<TEmitter, THolder>
|
|||
ft.SetParams(fValue);
|
||||
}
|
||||
|
||||
uint32_t m_coastType;
|
||||
|
||||
protected:
|
||||
virtual void EmitElement(XMLElement * p)
|
||||
{
|
||||
|
@ -334,7 +336,10 @@ protected:
|
|||
}
|
||||
else if (p->name == "way")
|
||||
{
|
||||
bool const isLine = feature::IsDrawableLike(fValue.m_Types, feature::FEATURE_TYPE_LINE);
|
||||
bool const isLine = feature::IsDrawableLike(fValue.m_Types, feature::FEATURE_TYPE_LINE) ||
|
||||
// this is important fix: we need to process all coastlines even without linear drawing rules
|
||||
(m_coastType != 0 && fValue.IsTypeExist(m_coastType));
|
||||
|
||||
bool const isArea = feature::IsDrawableLike(fValue.m_Types, feature::FEATURE_TYPE_AREA);
|
||||
|
||||
if (!isLine && !isArea)
|
||||
|
@ -448,8 +453,8 @@ protected:
|
|||
}
|
||||
|
||||
public:
|
||||
SecondPassParserUsual(TEmitter & emitter, THolder & holder)
|
||||
: base_type(emitter, holder)
|
||||
SecondPassParserUsual(TEmitter & emitter, THolder & holder, uint32_t coastType)
|
||||
: base_type(emitter, holder), m_coastType(coastType)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue