📄 gpsposition.cpp
字号:
#include "gps/GpsPosition.h"
TGpsPosition::TGpsPosition( ) {
Reset( );
}
TGpsPosition::TGpsPosition( const TReal & aLongitude, const TReal & aLatitude ) {
Reset( );
Set( aLongitude, aLatitude );
}
TGpsPosition::TGpsPosition( const TGpsPosition & aGpsPosition ) {
//Reset( );
Set( aGpsPosition );
}
void TGpsPosition::Reset( ) {
//Mem::FillZ( ( TAny * ) this, sizeof( TGpsPosition ) );
iLongitude = iLatitude = 0;
iPositionDataValid = EFalse;
iNumberOfSatellites = 0;
iHdop = 0;
iUtcTime = 0;
iTickCount = 0;
iHeading = 0;
iSpeedInKnots = 0;
iCourseDataValid = EFalse;
}
void TGpsPosition::Set( const TReal & aLongitude, const TReal & aLatitude ) {
iLongitude = aLongitude;
iLatitude = aLatitude;
ValidatePosition( );
}
void TGpsPosition::Set( const TGpsPosition & aPosition ) {
//Mem::Copy( this, &aGpsPosition, sizeof( TGpsPosition ) );
iLongitude = aPosition.iLongitude;
iLatitude = aPosition.iLatitude;
iPositionDataValid = aPosition.iPositionDataValid;
iNumberOfSatellites = aPosition.iNumberOfSatellites;
iHdop = aPosition.iHdop;
iUtcTime = aPosition.iUtcTime;
iTickCount = aPosition.iTickCount;
iHeading = aPosition.iHeading;
iSpeedInKnots = aPosition.iSpeedInKnots;
iCourseDataValid = aPosition.iCourseDataValid;
}
void TGpsPosition::SetExtendedInfo( TBool aValidFixFlag, TInt aNumberOfSatellites, const TReal & aHdop ) {
iNumberOfSatellites = aNumberOfSatellites;
iHdop = aHdop;
iPositionDataValid = aValidFixFlag;
}
void TGpsPosition::SetTimeInfo( const TReal & aUtcTime, TUint aTickCount ) {
iUtcTime = aUtcTime;
iTickCount = aTickCount;
}
void TGpsPosition::SetCourseData( const TReal & aHeading, const TReal & aSpeedInKnots, TBool aValidFlag ) {
iHeading = aHeading;
iSpeedInKnots = aSpeedInKnots;
iCourseDataValid = aValidFlag;
}
const TDesC & TGpsPosition::ToStringL( ) const {
_LIT( KInvalid, "invalid" );
if ( iPositionDataValid == EFalse )
return( KInvalid );
_LIT( KPositionFormat, "%.8lf %.8lf");
TBuf< 100 > temp;
temp.Format( KPositionFormat, iLongitude, iLatitude );
return( temp );
}
void TGpsPosition::ValidatePosition( ) {
TBool valid = ETrue;
if ( iLongitude < -180 || iLongitude > 180 )
valid = EFalse;
else if ( iLatitude < -90 || iLatitude > 90 )
valid = EFalse;
iPositionDataValid = valid;
}
const TReal & TGpsPosition::Longitude( ) const {
return( iLongitude );
}
const TReal & TGpsPosition::Latitude( ) const {
return( iLatitude );
}
TInt TGpsPosition::Satellites( ) const {
return( iNumberOfSatellites );
}
const TReal & TGpsPosition::Hdop( ) const {
return( iHdop );
}
const TReal & TGpsPosition::UtcTime( ) const {
return( iUtcTime );
}
TUint TGpsPosition::TickCount( ) const {
return( iTickCount );
}
const TReal & TGpsPosition::Heading( ) const {
return( iHeading );
}
const TReal & TGpsPosition::SpeedInKnots( ) const {
return( iSpeedInKnots );
}
const TReal TGpsPosition::SpeedInKmh( ) const {
return( iSpeedInKnots * 1.846 );
}
TBool TGpsPosition::CourseDataValid( ) const {
return( iCourseDataValid );
}
const TReal & TGpsPosition::Wgs84Longitude( ) const {
return( iLongitude );
}
const TReal & TGpsPosition::Wgs84Latitude( ) const {
return( iLatitude );
}
TBool TGpsPosition::IsValid( ) const {
return( iPositionDataValid );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -