QGIS API Documentation 3.99.0-Master (26c88405ac0)
Loading...
Searching...
No Matches
qgsgeocoderlocatorfilter.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsgeocoderlocatorfilter.cpp
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
17
18#include "qgsgeocoderresult.h"
19#include "qgsmapcanvas.h"
20#include "qgsmessagelog.h"
21
22#include "moc_qgsgeocoderlocatorfilter.cpp"
23
29
31{
33 filter->setFetchResultsDelay( fetchResultsDelay() );
34 return filter;
35}
36
37void QgsGeocoderLocatorFilter::handleGeocodeResult( const QgsGeocoderResult &result )
38{
40 QgsGeometry g = result.geometry();
41 const QgsRectangle viewport = result.viewport();
42 try
43 {
44 QgsRectangle bounds;
45 g.transform( ct );
46 if ( viewport.isNull() )
47 {
48 bounds = g.boundingBox();
49 }
50 else
51 {
52 QgsCoordinateTransform extentTransform = ct;
53 extentTransform.setBallparkTransformsAreAppropriate( true );
54 bounds = extentTransform.transformBoundingBox( viewport );
55 }
56 mCanvas->zoomToFeatureExtent( bounds );
57
58 mCanvas->flashGeometries( QList<QgsGeometry>() << g );
59 }
60 catch ( QgsCsException & )
61 {
62 QgsMessageLog::logMessage( tr( "Could not transform result to canvas CRS" ) );
63 }
64}
QgsAbstractGeocoderLocatorFilter(const QString &name, const QString &displayName, const QString &prefix, QgsGeocoderInterface *geocoder, const QgsRectangle &boundingBox=QgsRectangle())
Constructor for QgsAbstractGeocoderLocatorFilter.
QgsGeocoderInterface * geocoder() const
Returns the geocoder attached to the filter.
const QgsRectangle boundingBox()
Returns the WGS84 bounding box attached to the filter.
Handles coordinate transforms between two coordinate systems.
void setBallparkTransformsAreAppropriate(bool appropriate)
Sets whether approximate "ballpark" results are appropriate for this coordinate transform.
QgsRectangle transformBoundingBox(const QgsRectangle &rectangle, Qgis::TransformDirection direction=Qgis::TransformDirection::Forward, bool handle180Crossover=false) const
Transforms a rectangle from the source CRS to the destination CRS.
Interface for geocoders.
Definition qgsgeocoder.h:37
QgsLocatorFilter * clone() const override SIP_FACTORY
QgsGeocoderLocatorFilter(const QString &name, const QString &displayName, const QString &prefix, QgsGeocoderInterface *geocoder, QgsMapCanvas *canvas, const QgsRectangle &boundingBox=QgsRectangle())
Constructor for QgsGeocoderLocatorFilter.
QgsMapCanvas * mCanvas
Associated map canvas.
Represents a matching result from a geocoder search.
QgsRectangle viewport() const
Returns the suggested viewport for the result, which reflects a recommended map extent for displaying...
QgsCoordinateReferenceSystem crs() const
Returns the coordinate reference system for the calculated geometry().
QgsGeometry geometry() const
Returns the resultant geometry resulting from the geocoding operation.
A geometry is the spatial representation of a feature.
Qgis::GeometryOperationResult transform(const QgsCoordinateTransform &ct, Qgis::TransformDirection direction=Qgis::TransformDirection::Forward, bool transformZ=false)
Transforms this geometry as described by the coordinate transform ct.
QgsRectangle boundingBox() const
Returns the bounding box of the geometry.
Abstract base class for filters which collect locator results.
void setFetchResultsDelay(int delay)
Sets a delay (in milliseconds) for the filter to wait prior to fetching results.
Map canvas is a class for displaying all GIS data types on a canvas.
const QgsMapSettings & mapSettings() const
Gets access to properties used for map rendering.
QgsCoordinateReferenceSystem destinationCrs() const
Returns the destination coordinate reference system for the map render.
QgsCoordinateTransformContext transformContext() const
Returns the coordinate transform context, which stores various information regarding which datum tran...
static void logMessage(const QString &message, const QString &tag=QString(), Qgis::MessageLevel level=Qgis::MessageLevel::Warning, bool notifyUser=true, const char *file=__builtin_FILE(), const char *function=__builtin_FUNCTION(), int line=__builtin_LINE())
Adds a message to the log instance (and creates it if necessary).
A rectangle specified with double values.