Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsgeocoderresult.h 3 : : --------------- 4 : : Date : August 2020 5 : : Copyright : (C) 2020 by Nyall Dawson 6 : : Email : nyall dot dawson at gmail dot com 7 : : *************************************************************************** 8 : : * * 9 : : * This program is free software; you can redistribute it and/or modify * 10 : : * it under the terms of the GNU General Public License as published by * 11 : : * the Free Software Foundation; either version 2 of the License, or * 12 : : * (at your option) any later version. * 13 : : * * 14 : : ***************************************************************************/ 15 : : 16 : : #ifndef QGSGEOCODERRESULT_H 17 : : #define QGSGEOCODERRESULT_H 18 : : 19 : : #include "qgis_core.h" 20 : : 21 : : #include "qgscoordinatereferencesystem.h" 22 : : #include "qgsgeometry.h" 23 : : 24 : : 25 : : /** 26 : : * \ingroup core 27 : : * \brief Represents a matching result from a geocoder search. 28 : : * 29 : : * QgsGeocoderResult objects may represent valid matches, or an invalid 30 : : * error result. This can be checked by testing isValid(). An invalid 31 : : * result represents that an error was encountered while geocoding, in which case the 32 : : * error message can be retrieved by calling error(). 33 : : * 34 : : * Valid geocoding results will have a geometry() and crs(), along with a set 35 : : * of optional additionalAttributes() which may contain information such as the 36 : : * accuracy of the geocoding result. 37 : : * 38 : : * \since QGIS 3.18 39 : : */ 40 : 0 : class CORE_EXPORT QgsGeocoderResult 41 : : { 42 : : 43 : : public: 44 : : 45 : : /** 46 : : * Creates an invalid error result, with the specified \a errorMessage string. 47 : : */ 48 : : static QgsGeocoderResult errorResult( const QString &errorMessage ); 49 : : 50 : : /** 51 : : * Constructor for a valid QgsGeocoderResult, with the specified \a geometry and \a crs. 52 : : */ 53 : : QgsGeocoderResult( const QString &identifier, const QgsGeometry &geometry, const QgsCoordinateReferenceSystem &crs ); 54 : : 55 : : /** 56 : : * Returns TRUE if the result is a valid result. 57 : : * 58 : : * If the result is invalid, the error message can be retrieved by calling error(). 59 : : */ 60 : 0 : bool isValid() const { return mIsValid; } 61 : : 62 : : /** 63 : : * Returns the error string, if the result is invalid. 64 : : */ 65 : 0 : QString error() const { return mErrorString; } 66 : : 67 : : /** 68 : : * Returns the identifier string for the result. 69 : : */ 70 : 0 : QString identifier() const { return mIdentifier; } 71 : : 72 : : /** 73 : : * Returns the resultant geometry resulting from the geocoding operation. 74 : : * 75 : : * The coordinate reference system for the geometry can be retrieved 76 : : * via crs(). 77 : : * 78 : : * \see setGeometry() 79 : : * \see crs() 80 : : */ 81 : 0 : QgsGeometry geometry() const { return mGeometry; } 82 : : 83 : : /** 84 : : * Sets the resultant \a geometry resulting from the geocoding operation. 85 : : * 86 : : * The coordinate reference system for the geometry should also be set 87 : : * via setCrs(). 88 : : * 89 : : * \see geometry() 90 : : * \see setCrs() 91 : : */ 92 : : void setGeometry( const QgsGeometry &geometry ) { mGeometry = geometry; } 93 : : 94 : : /** 95 : : * Returns the coordinate reference system for the calculated geometry(). 96 : : * 97 : : * \see setCrs() 98 : : * \see geometry() 99 : : */ 100 : 0 : QgsCoordinateReferenceSystem crs() const { return mCrs; } 101 : : 102 : : /** 103 : : * Sets the coordinate reference system for the calculated geometry(). 104 : : * 105 : : * \see crs() 106 : : * \see geometry() 107 : : */ 108 : : void setCrs( const QgsCoordinateReferenceSystem &crs ) { mCrs = crs; } 109 : : 110 : : /** 111 : : * Returns the suggested viewport for the result, which reflects a recommended 112 : : * map extent for displaying the result. 113 : : * 114 : : * This is an optional property, and will return a null rectangle if a recommended viewport 115 : : * is not available (or not appropriate). 116 : : * 117 : : * The viewport CRS will match the CRS of geometry(), and can be retrieved via the crs() method. 118 : : * 119 : : * \see setViewport() 120 : : */ 121 : 0 : QgsRectangle viewport() const { return mViewport; } 122 : : 123 : : /** 124 : : * Sets the suggested \a viewport for the result, which reflects a recommended 125 : : * map extent for displaying the result. 126 : : * 127 : : * This is an optional property, and can be set to a null rectangle if a recommended viewport 128 : : * is not available (or not appropriate). 129 : : * 130 : : * The viewport CRS must match the CRS of geometry()d. 131 : : * 132 : : * \see viewport() 133 : : */ 134 : 0 : void setViewport( const QgsRectangle &viewport ) { mViewport = viewport; } 135 : : 136 : : /** 137 : : * Contains additional attributes generated during the geocode, 138 : : * which may be added to features being geocoded. 139 : : * 140 : : * \see setAdditionalAttributes() 141 : : */ 142 : 0 : QVariantMap additionalAttributes() const { return mAdditionalAttributes; } 143 : : 144 : : /** 145 : : * Setss additional attributes generated during the geocode, 146 : : * which may be added to features being geocoded. 147 : : * 148 : : * \see additionalAttributes() 149 : : */ 150 : 0 : void setAdditionalAttributes( const QVariantMap &attributes ) { mAdditionalAttributes = attributes; } 151 : : 152 : : /** 153 : : * Returns the optional group value for the result. 154 : : * 155 : : * The group can be used to categorize results into different groups, e.g. by appropriate administrative region. 156 : : * 157 : : * \see setGroup() 158 : : */ 159 : : QString group() const; 160 : : 161 : : /** 162 : : * Sets the optional \a group value for the result. 163 : : * 164 : : * The \a group can be used to categorize results into different groups, e.g. by appropriate administrative region. 165 : : * 166 : : * \see group() 167 : : */ 168 : : void setGroup( const QString &group ); 169 : : 170 : : /** 171 : : * Returns the optional description for the result. 172 : : * 173 : : * \see setDescription() 174 : : */ 175 : : QString description() const; 176 : : 177 : : /** 178 : : * Sets an optional \a description for the result. 179 : : * 180 : : * \see description() 181 : : */ 182 : : void setDescription( const QString &description ); 183 : : 184 : : private: 185 : : 186 : 0 : QgsGeocoderResult() = default; 187 : : 188 : 0 : bool mIsValid = false; 189 : : QString mErrorString; 190 : : 191 : : QString mIdentifier; 192 : : QString mDescription; 193 : : QString mGroup; 194 : : QgsGeometry mGeometry; 195 : : QgsCoordinateReferenceSystem mCrs; 196 : : QgsRectangle mViewport; 197 : : QVariantMap mAdditionalAttributes; 198 : : 199 : : }; 200 : : 201 : : #endif // QGSGEOCODERRESULT_H