williamr@2: /* williamr@2: * Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@2: * under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: * which accompanies this distribution, and is available williamr@2: * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: CPosLmNearestCriteria class williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: #ifndef CPOSLMNEARESTCRITERIA_H williamr@2: #define CPOSLMNEARESTCRITERIA_H williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include "EPos_CPosLmSearchCriteria.h" williamr@2: williamr@2: williamr@2: /** williamr@2: * Criterion for finding the landmarks which are closest to a certain williamr@2: * coordinate, called "center coordinate". williamr@2: * williamr@2: * When using @ref CPosLmNearestCriteria, the matches returned in the search williamr@2: * are sorted in ascending distance order if the client does not specify williamr@2: * other sort preferences. williamr@2: * williamr@2: * By default, this search returns all landmarks in the database, except williamr@2: * those which have no coordinates. It is recommended to specify a maximum williamr@2: * distance to narrow down the search. This is done by @ref SetMaxDistance. williamr@2: * williamr@2: * The client can specify if the coverage radius should be used. williamr@2: * If coverage radius is used, the distance to the landmark coverage area williamr@2: * border is used instead of the distance to the landmark coverage area williamr@2: * center. If the source coordinate is inside the landmark coverage area, williamr@2: * the distance is considered zero. By default, the coverage radius is not williamr@2: * used. williamr@2: * williamr@2: * This criterion is only valid when searching for landmarks, i.e. if it williamr@2: * is passed to @p CPosLandmarkSearch::StartCategorySearchL, the function williamr@2: * will fail with error code @p KErrArgument. williamr@2: * williamr@2: * @lib eposlmsearchlib.lib williamr@2: * @since S60 3.0 williamr@2: */ williamr@2: class CPosLmNearestCriteria : public CPosLmSearchCriteria williamr@2: { williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Two-phased constructor. williamr@2: * williamr@2: * Latitude and longitude must be set in the coordinate (not NaN). williamr@2: * Altitude is ignored. williamr@2: * williamr@2: * @param[in] aCoordinate The center coordinate of the landmark search. williamr@2: * @param[in] aUseCoverageRadius @p ETrue if coverage radius should be williamr@2: * considered in the search. williamr@2: * williamr@2: * @panic "Landmarks Client"-EPosNaNCoordinate Latitude and/or longitude is NaN. williamr@2: */ williamr@2: IMPORT_C static CPosLmNearestCriteria* NewLC( williamr@2: const TCoordinate& aCoordinate, williamr@2: TBool aUseCoverageRadius = EFalse williamr@2: ); williamr@2: williamr@2: /** williamr@2: * Destructor. williamr@2: */ williamr@2: virtual ~CPosLmNearestCriteria(); williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Returns the center coordinate of the search. williamr@2: * williamr@2: * @param[out] aCoordinate On return, contains the center coordinate. williamr@2: */ williamr@2: IMPORT_C void GetCoordinate( TCoordinate& aCoordinate ) const; williamr@2: williamr@2: /** williamr@2: * Set the center coordinate of the search. williamr@2: * williamr@2: * Latitude and longitude must be set in the coordinate (not NaN). williamr@2: * Altitude is ignored. williamr@2: * williamr@2: * @param[in] aCoordinate The center coordinate of the landmarks search. williamr@2: * williamr@2: * @panic "Landmarks Client"-EPosNaNCoordinate Latitude and/or longitude is NaN. williamr@2: */ williamr@2: IMPORT_C void SetCoordinate( const TCoordinate& aCoordinate ); williamr@2: williamr@2: /** williamr@2: * Returns if coverage radius is considered in the search. williamr@2: * williamr@2: * @return @p ETrue if coverage radius is considered in the search. williamr@2: * @p EFalse otherwise. williamr@2: */ williamr@2: IMPORT_C TBool UseCoverageRadius() const; williamr@2: williamr@2: /** williamr@2: * Set if coverage radius should be considered in the search. williamr@2: * williamr@2: * @param aUseCoverageRadius @p ETrue if coverage radius should be williamr@2: * considered in the search. @p EFalse otherwise. williamr@2: */ williamr@2: IMPORT_C void SetUseCoverageRadius( TBool aUseCoverageRadius ); williamr@2: williamr@2: /** williamr@2: * Returns whether the search should be limited to landmarks which are williamr@2: * closer than a maximum distance. williamr@2: * williamr@2: * By default the maximum distance is set to NaN which means that the williamr@2: * distance is unlimited. williamr@2: * williamr@2: * @return The maximum distance or NaN if the distance is unlimited. williamr@2: */ williamr@2: IMPORT_C TReal32 MaxDistance() const; williamr@2: williamr@2: /** williamr@2: * Set a maximum distance for the search. williamr@2: * williamr@2: * Only landmarks, which are closer to the center coordinate than the williamr@2: * maximum distance are considered matches. williamr@2: * williamr@2: * @param aMaxDistance The maximum distance or NaN if the distance williamr@2: * should be unlimited. williamr@2: */ williamr@2: IMPORT_C void SetMaxDistance( TReal32 aMaxDistance ); williamr@2: williamr@2: private: williamr@2: williamr@2: CPosLmNearestCriteria(TBool aUseCoverageRadius); williamr@2: williamr@2: void ConstructL(const TCoordinate& aCoordinate); williamr@2: williamr@2: // Prohibit copy constructor williamr@2: CPosLmNearestCriteria( const CPosLmNearestCriteria& ); williamr@2: // Prohibit assigment operator williamr@2: CPosLmNearestCriteria& operator= ( const CPosLmNearestCriteria& ); williamr@2: williamr@2: private: williamr@2: williamr@2: TCoordinate iCenterCoordinate; williamr@2: TBool iUseCoverageRadius; williamr@2: TReal32 iMaxDistance; williamr@2: williamr@2: }; williamr@2: williamr@2: #endif // CPOSLMNEARESTCRITERIA_H williamr@2: williamr@2: