Do not show tiny airfields of FSX

This commit is contained in:
Klaus Basan
2017-02-01 20:35:44 +01:00
committed by Mathew Sutcliffe
parent 01b79a76a6
commit e3ab9d08c3
3 changed files with 11 additions and 3 deletions

View File

@@ -29,7 +29,7 @@ namespace BlackMisc
QString CAirportIcaoCode::unifyAirportCode(const QString &icaoCode) QString CAirportIcaoCode::unifyAirportCode(const QString &icaoCode)
{ {
QString code = icaoCode.trimmed().toUpper(); const QString code = icaoCode.trimmed().toUpper();
if (code.length() != 4) return ""; if (code.length() != 4) return "";
if (containsChar(code, [](QChar c) { return !c.isLetterOrNumber(); })) { return ""; } if (containsChar(code, [](QChar c) { return !c.isLetterOrNumber(); })) { return ""; }
return code; return code;
@@ -37,9 +37,13 @@ namespace BlackMisc
bool CAirportIcaoCode::isValidIcaoDesignator(const QString &icaoCode) bool CAirportIcaoCode::isValidIcaoDesignator(const QString &icaoCode)
{ {
QString icao = unifyAirportCode(icaoCode); const QString icao = unifyAirportCode(icaoCode);
return icao.length() == 4; return icao.length() == 4;
} }
bool CAirportIcaoCode::containsNumbers(const QString &icaoCode)
{
return (containsChar(icaoCode, [](QChar c) { return c.isDigit(); }));
}
} // namespace } // namespace
} // namespace } // namespace

View File

@@ -57,6 +57,9 @@ namespace BlackMisc
//! Valid ICAO designator //! Valid ICAO designator
static bool isValidIcaoDesignator(const QString &icaoCode); static bool isValidIcaoDesignator(const QString &icaoCode);
//! Containing numbers (normally indicator for small airfield/strip)
static bool containsNumbers(const QString &icaoCode);
//! \copydoc BlackMisc::Mixin::String::toQString() //! \copydoc BlackMisc::Mixin::String::toQString()
QString convertToQString(bool i18n = false) const; QString convertToQString(bool i18n = false) const;

View File

@@ -267,7 +267,8 @@ namespace BlackSimPlugin
if (!pFacilityAirport) { break; } if (!pFacilityAirport) { break; }
const QString icao(pFacilityAirport->Icao); const QString icao(pFacilityAirport->Icao);
if (icao.isEmpty()) { continue; } // airfield without ICAO code if (icao.isEmpty()) { continue; } // airfield without ICAO code
if (!CAirportIcaoCode::isValidIcaoDesignator(icao)) { continue; } // tiny airfields in simulator if (!CAirportIcaoCode::isValidIcaoDesignator(icao)) { continue; } // tiny airfields/strips in simulator
if (CAirportIcaoCode::containsNumbers(icao)) { continue; } // tiny airfields/strips in simulator
const CCoordinateGeodetic pos(pFacilityAirport->Latitude, pFacilityAirport->Longitude, pFacilityAirport->Altitude); const CCoordinateGeodetic pos(pFacilityAirport->Latitude, pFacilityAirport->Longitude, pFacilityAirport->Altitude);
CAirport airport(CAirportIcaoCode(icao), pos); CAirport airport(CAirportIcaoCode(icao), pos);
const CLength d = airport.calculcateAndUpdateRelativeDistanceAndBearing(posAircraft); const CLength d = airport.calculcateAndUpdateRelativeDistanceAndBearing(posAircraft);