diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/mw/epos_cposlmareacriteria.h --- a/epoc32/include/mw/epos_cposlmareacriteria.h Tue Nov 24 13:55:44 2009 +0000 +++ b/epoc32/include/mw/epos_cposlmareacriteria.h Tue Mar 16 16:12:26 2010 +0000 @@ -1,1 +1,160 @@ -epos_cposlmareacriteria.h +/* +* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* 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 +* which accompanies this distribution, and is available +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: CPosLmAreaCriteria class +* +*/ + + +#ifndef CPOSLMAREACRITERIA_H +#define CPOSLMAREACRITERIA_H + +#include <e32base.h> +#include "EPos_CPosLmSearchCriteria.h" + +/** +* Criterion for searching for landmarks which reside in a certain area. +* +* The search area is defined by providing two latitude and two longitude +* values which specify the borders of the area. Note that this search +* does not consider landmark coverage radius, see +* @p CPosLandmark::GetCoverageRadius. +* +* The search area is defined as a spherical rectangle, limited by two +* longitude borders (WestLongitude and EastLongitude) and two latitude +* borders (SouthLatitude and NorthLatitude). +* +* It is required that -90 =< SouthLatitude =< NorthLatitude =< 90. +* WestLongitude must be in the interval [-180, 180), i.e. not including +180. +* EastLongitude must be in the interval [-180, 180], i.e. including +180. +* It is allowed that EastLongitude < WestLongitude. This defines an area +* which crosses the 180 meridian. The area definition is inclusive, i.e. +* landmarks which lie on the border of the area will be considered as matches. +* If WestLongitude = EastLongitude and NorthLatitude = SouthLatitude then +* only landmarks which match the longitude and latitude respectively, are +* considered to be matches. If WestLongitude = -180 and EastLongitude = +180, +* all longitudes are included in the search. +* +* This criterion is only valid when searching for landmarks, i.e. if it +* is passed to @p CPosLandmarkSearch::StartCategorySearchL, the function +* will fail with error code @p KErrArgument. +* +* @lib eposlmsearchlib.lib +* @since S60 3.0 +*/ +class CPosLmAreaCriteria : public CPosLmSearchCriteria + { + public: + + /** + * Two-phased constructor. + * + * The input parameters specify the area to search as described + * in the class description. + * + * If one of the parameters is out of range, this function fails with + * error code @p KErrArgument. The correct ranges are: + * -# -90 =< aSouthLatitude =< aNorthLatitude =< 90 + * -# -180 <= aWestLongitude < 180 + * -# -180 <= aEastLongitude <= 180 + * + * @param[in] aSouthLatitude The southern latitude border of the search area. + * @param[in] aNorthLatitude The northern latitude border of the search area. + * @param[in] aWestLongitude The western longitude border of the search area. + * @param[in] aEastLongitude The eastern longitude border of the search area. + * @returns A new instance of this class. + */ + IMPORT_C static CPosLmAreaCriteria* NewLC( + const TReal64& aSouthLatitude, + const TReal64& aNorthLatitude, + const TReal64& aWestLongitude, + const TReal64& aEastLongitude + ); + + /** + * Destructor. + */ + virtual ~CPosLmAreaCriteria(); + + public: + + /** + * Returns the search area. + * + * @param[out] aSouthLatitude The southern latitude border of the search area. + * @param[out] aNorthLatitude The northern latitude border of the search area. + * @param[out] aWestLongitude The western longitude border of the search area. + * @param[out] aEastLongitude The eastern longitude border of the search area. + */ + IMPORT_C void GetSearchArea( + TReal64& aSouthLatitude, + TReal64& aNorthLatitude, + TReal64& aWestLongitude, + TReal64& aEastLongitude + ) const; + + /** + * Define the search area. + * + * The input parameters specify the area to search as described in the + * class description. + * + * If one of the parameters is out of range, this function fails with + * error code @p KErrArgument. The correct ranges are: + * -# -90 =< aSouthLatitude =< aNorthLatitude =< 90 + * -# -180 <= aWestLongitude < 180 + * -# -180 <= aEastLongitude <= 180 + * + * @param[in] aSouthLatitude The southern latitude border of the search area. + * @param[in] aNorthLatitude The northern latitude border of the search area. + * @param[in] aWestLongitude The western longitude border of the search area. + * @param[in] aEastLongitude The eastern longitude border of the search area. + * @returns @p KErrNone if successful, @p KErrArgument if the input + * parameters are invalid, otherwise a system wide error code. + */ + IMPORT_C TInt SetSearchArea( + const TReal64& aSouthLatitude, + const TReal64& aNorthLatitude, + const TReal64& aWestLongitude, + const TReal64& aEastLongitude + ); + + private: + + // C++ constructor + CPosLmAreaCriteria(); + + void ConstructL( + const TReal64& aSouthLatitude, + const TReal64& aNorthLatitude, + const TReal64& aWestLongitude, + const TReal64& aEastLongitude + ); + + // Prohibit copy constructor + CPosLmAreaCriteria( const CPosLmAreaCriteria& ); + // Prohibit assigment operator + CPosLmAreaCriteria& operator= ( const CPosLmAreaCriteria& ); + + private: + + TReal64 iSouthLatitude; + TReal64 iNorthLatitude; + TReal64 iWestLongitude; + TReal64 iEastLongitude; + + }; + +#endif // CPOSLMAREACRITERIA_H + +