diff --git a/piqt/CMakeLists.txt b/piqt/CMakeLists.txt index 4ed27c9..8a91724 100644 --- a/piqt/CMakeLists.txt +++ b/piqt/CMakeLists.txt @@ -17,7 +17,7 @@ list(APPEND QT_MULTILIB_LIST ${PROJECT_NAME}) set(QT_MULTILIB_LIST ${QT_MULTILIB_LIST} PARENT_SCOPE) include_directories(${PIP_INCLUDES} ${QAD_INCLUDES}) file(GLOB SRC "*.h" "*.cpp" "*.ui" "*.qrc" "lang/*.ts") -find_qt(${QtVersions} Core Gui) +find_qt(${QtVersions} Core Gui Positioning) qt_wrap(${SRC} HDRS out_HDR CPPS out_CPP QMS out_QM) qt_add_library(${PROJECT_NAME} SHARED out_CPP) qt_target_link_libraries(${PROJECT_NAME} pip qad_utils qad_widgets) diff --git a/piqt/piqt.cpp b/piqt/piqt.cpp index d0bbdc1..39bf9df 100644 --- a/piqt/piqt.cpp +++ b/piqt/piqt.cpp @@ -121,3 +121,16 @@ const PIVariantTypes::Dir QAD2PIDir(const QAD::Dir & v) { return PIVariantTypes::Dir(Q2PIString(v.dir), v.is_abs); } + +const QGeoCoordinate PI2QGeoPosition(const PIGeoPosition & v) { + PIGeoPosition p(v); + p.transformTo(PIGeoPosition::Cartesian); + p.setEllipsoidModel(PIEllipsoidModel::WGS84Ellipsoid()); + p.transformTo(PIGeoPosition::Geodetic); + return QGeoCoordinate(p.latitudeGeodetic(), p.longitude(), p.height()); +} + + +const PIGeoPosition Q2PIGeoPosition(const QGeoCoordinate & v) { + return PIGeoPosition(createVectorT3d(v.latitude(), v.longitude(), v.altitude()), PIGeoPosition::Geodetic); +} diff --git a/piqt/piqt.h b/piqt/piqt.h index db7bc60..56bafb8 100644 --- a/piqt/piqt.h +++ b/piqt/piqt.h @@ -3,10 +3,12 @@ #include "pimathmatrix.h" #include "pipropertystorage.h" +#include "pigeoposition.h" #include "qad_types.h" #include #include #include +#include const QVariant PI2QVariant(const PIVariant & v); @@ -110,6 +112,8 @@ const PIVariantTypes::IODevice QAD2PIIODevice(const QAD::IODevice & v); //inline const PIVariant QString2PIVariant(const QString & v) {return PIVariant::readFromString(QString2PIString(v));} +const QGeoCoordinate PI2QGeoPosition(const PIGeoPosition & v); +const PIGeoPosition Q2PIGeoPosition(const QGeoCoordinate & v); template class __PIQtConverter {