gpsposition.cpp

来自「symbian s60上的GPS」· C++ 代码 · 共 168 行

CPP
168
字号

#include "GpsPosition.h"


EXPORT_C TGpsPosition::TGpsPosition( void ) 
{
	Reset();
}

EXPORT_C TGpsPosition::TGpsPosition( const TReal & aLongitude, const TReal & aLatitude ) 
{
	Reset();
	Set( aLongitude, aLatitude );
}

EXPORT_C TGpsPosition::TGpsPosition( const TGpsPosition & aGpsPosition ) 
{
	Set( aGpsPosition );
}

EXPORT_C void TGpsPosition::Reset( void ) 
{
	iLongitude = iLatitude	= 0;
	iPositionDataValid		= EFalse;
	iNumberOfSatellites		= 0;
	iHdop					= 0;
	iUtcTime				= 0;
	iTickCount				= 0;
	iHeading				= 0;
	iSpeedInKnots			= 0;
	iCourseDataValid		= EFalse;
}

EXPORT_C void TGpsPosition::Set( const TReal & aLongitude, const TReal & aLatitude ) 
{
	iLongitude				= aLongitude;
	iLatitude				= aLatitude;

	ValidatePosition();
}

EXPORT_C void TGpsPosition::Set( const TGpsPosition & aPosition ) 
{
	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;
}

EXPORT_C void TGpsPosition::SetExtendedInfo( TBool aValidFixFlag, TInt aNumberOfSatellites, const TReal & aHdop ) 
{
	iNumberOfSatellites		= aNumberOfSatellites;
	iHdop					= aHdop;
	iPositionDataValid		= aValidFixFlag;
}

EXPORT_C void TGpsPosition::SetTimeInfo( const TReal & aUtcTime, TUint aTickCount )
{
	iUtcTime				= aUtcTime;
	iTickCount				= aTickCount;
}

EXPORT_C void TGpsPosition::SetCourseData( const TReal & aHeading, const TReal & aSpeedInKnots, TBool aValidFlag ) 
{
	iHeading				= aHeading;
	iSpeedInKnots			= aSpeedInKnots;
	iCourseDataValid		= aValidFlag;
}

EXPORT_C const TDesC & TGpsPosition::ToStringL( void ) 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( void ) 
{
	TBool valid = ETrue;

	if ( iLongitude < -180 || iLongitude > 180 )
		valid = EFalse;

	else if ( iLatitude < -90 || iLatitude > 90 )
		valid = EFalse;

	iPositionDataValid = valid;
}

EXPORT_C const TReal & TGpsPosition::Longitude( void ) const 
{
	return( iLongitude );
}

EXPORT_C const TReal & TGpsPosition::Latitude( void ) const 
{
	return( iLatitude );
}

EXPORT_C TInt TGpsPosition::Satellites( void ) const 
{
	return( iNumberOfSatellites );
}

EXPORT_C const TReal & TGpsPosition::Hdop( void ) const 
{
	return( iHdop );
}

EXPORT_C const TReal & TGpsPosition::UtcTime( void ) const 
{
	return( iUtcTime );
}

EXPORT_C TUint TGpsPosition::TickCount( void ) const 
{
	return( iTickCount );
}

EXPORT_C const TReal & TGpsPosition::Heading( void ) const 
{
	return( iHeading );
}

EXPORT_C const TReal & TGpsPosition::SpeedInKnots( void ) const 
{
	return( iSpeedInKnots );
}

EXPORT_C const TReal TGpsPosition::SpeedInKmh( void ) const 
{
	return( iSpeedInKnots * 1.846 );
}

EXPORT_C TBool TGpsPosition::CourseDataValid( void ) const 
{ 
	return( iCourseDataValid );
}

EXPORT_C const TReal & TGpsPosition::Wgs84Longitude( void ) const 
{ 
	return( iLongitude );
}

EXPORT_C const TReal & TGpsPosition::Wgs84Latitude( void ) const 
{ 
	return( iLatitude ); 
}

EXPORT_C TBool TGpsPosition::IsValid( void ) const 
{
	return( iPositionDataValid );
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?