Parse WGS coordinates

This commit is contained in:
Klaus Basan
2019-07-23 13:59:56 +02:00
committed by Mat Sutcliffe
parent 7ea9e7c2b2
commit f40dbb6c81
3 changed files with 49 additions and 1 deletions

View File

@@ -178,7 +178,7 @@ namespace BlackGui
void CCoordinateForm::locationEntered()
{
const QString l = ui->le_Location->text().trimmed().toUpper();
const QString l = ui->le_Location->text().trimmed().simplified().toUpper();
// location based on swift data
if (sApp && sApp->hasWebDataServices())
@@ -203,6 +203,29 @@ namespace BlackGui
return;
}
}
// 33°5942″S 150°5706″E
if (l.contains(' '))
{
QString lat, lng;
const QStringList parts = l.split(' ');
for (const QString &p : parts)
{
if (p.contains('S') || p.contains('N'))
{
lat = p;
}
else if (p.contains('E') || p.contains('W'))
{
lng = p;
}
}
if (!lat.isEmpty() && !lng.isEmpty())
{
CCoordinateGeodetic c = m_coordinate;
c.setLatLongFromWgs84(lat, lng);
this->setCoordinate(c);
}
}
}
void CCoordinateForm::latEntered()

View File

@@ -330,11 +330,21 @@ namespace BlackMisc
this->setLatLong(latitude, this->longitude());
}
void CCoordinateGeodetic::setLatitudeFromWgs84(const QString &wgs)
{
this->setLatitude(CLatitude::fromWgs84(wgs));
}
void CCoordinateGeodetic::setLongitude(const CLongitude &longitude)
{
this->setLatLong(this->latitude(), longitude);
}
void CCoordinateGeodetic::setLongitudeFromWgs84(const QString &wgs)
{
this->setLongitude(CLongitude::fromWgs84(wgs));
}
void CCoordinateGeodetic::setLatLong(const CLatitude &latitude, const CLongitude &longitude)
{
m_x = latitude.cos() * longitude.cos();
@@ -342,6 +352,12 @@ namespace BlackMisc
m_z = latitude.sin();
}
void CCoordinateGeodetic::setLatLongFromWgs84(const QString &latitude, const QString &longitude)
{
this->setLatitudeFromWgs84(latitude);
this->setLongitudeFromWgs84(longitude);
}
void CCoordinateGeodetic::setGeodeticHeightToNull()
{
this->setGeodeticHeight(CAltitude::null());

View File

@@ -277,12 +277,21 @@ namespace BlackMisc
//! Set latitude
void setLatitude(const CLatitude &latitude);
//! Set latitude
void setLatitudeFromWgs84(const QString &wgs);
//! Set longitude
void setLongitude(const CLongitude &longitude);
//! Set longitude
void setLongitudeFromWgs84(const QString &wgs);
//! Set latitude and longitude
void setLatLong(const CLatitude &latitude, const CLongitude &longitude);
//! Set latitude and longitude
void setLatLongFromWgs84(const QString &latitude, const QString &longitude);
//! Set height (ellipsoidal or geodetic height)
void setGeodeticHeight(const Aviation::CAltitude &height) { m_geodeticHeight = height; }