summaryrefslogtreecommitdiff
path: root/src/location/declarativemaps/qdeclarativecirclemapitem.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Enable mercator-to-screen projection in GLSLPaolo Angelelli2020-02-111-209/+182
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With this change, all the geo-to-screen conversion, and the triangulation operations for geo polylines and geo polygon are performed either at set time or in the shader. A separate bounding box geometry is processed in the old way to provide a correct QtQuick Item geometry, that can be used for nesting mouse areas, performing translations, input event delivery, etc. With this approach, performance are improved by more than one order of magnitude in average, but complex geometries will of course benefit more. It also adds correct rendering support for polygons with holes, previously only rendered correctly by the MapboxGL plugin. The polyline shader has basic miter joins. The miter is skipped if the angle is too sharp to avoid complicating the implementation. This shader introduces some glitches when the polyline is minified, for which the real fix is to have LOD for the geometry, and render simplified geometries at low zoom levels (added in a subsequent patch). Note: this approach, at least in its current implementation, does not support enabling layers on individual items, only on the Map element. Task-number: QTBUG-49303 Task-number: QTBUG-38459 Change-Id: I0c2dc0bf364d32f74ca7c4014f6d66e6219c8ae4 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Add autoFadeIn property to map itemsPaolo Angelelli2019-08-211-0/+11
| | | | | | | | | | | | | | This property allows a user to disable the until now built-in behavior that makes map items fade in or fade out between zoom levels 1.5 and 2.5. By default the old behavior is kept. [ChangeLog][Location][MapItems] Added property to disable the automatic fade-in/fade-out behavior on low zoom levels Change-Id: Id764f12d34db528f533f14fd561604507681f216 Fixes: QTBUG-76867 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Fix crash when removing items from MapboxGL mapsPaolo Angelelli2019-01-291-5/+1
| | | | | | | | Triggered by usage of a virtual method in superclass destructor. Change-Id: If99e523e42fd13686ae43c0083a74e1b68221fc7 Fixes: QTBUG-67638 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Make QDeclarativeGeoMapItemBase::geoShape R/WPaolo Angelelli2018-08-141-0/+18
| | | | | | | | This patch adds a setter for the geoShape property, overridden in the subclasses. Change-Id: I5fc4d412efee5e95c5650943ea5bf9b72dc40155 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Fix MapCircle QQuickItem geometry to allow enabling layersPaolo Angelelli2018-04-201-3/+11
| | | | | | | | | This patch does not include a fix for the degenerated cases: - circle including one pole - circle including both poles Change-Id: I78d9a29bf1071ab3b3405179f34f42a71c0a79a5 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Merge remote-tracking branch 'origin/wip/navigation' into 5.11Paolo Angelelli2018-04-171-5/+4
|\ | | | | | | | | | | | | | | | | Conflicts: src/location/declarativemaps/qgeomapobject.cpp src/location/declarativemaps/qgeomapobject_p_p.h src/plugins/geoservices/itemsoverlay/qgeomapitemsoverlay.h Change-Id: Iab847e16011b2095d307e2a3610bf9157ae7b92d
| * Introduce map objects reference implementationPaolo Angelelli2018-04-171-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch introduces a reference implementation for the QGeoMapObject subclasses in the locationlabs module. If this module is built, all current plugins, with the exception of mapboxgl, will also be able to render map objects. The current reference implementation of map objects is not optimized, but it can be useful for both testing and feature parity (so that switching between plugins will give the same result). Change-Id: I830ebb3813f219e42c085f450952a2b4327361cd Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | Doc: Fix all documentation warningsTopi Reinio2018-03-271-1/+1
|/ | | | | | | | | | | | | | | | | | | | Fix multiple warnings caused by invalid documentation configuration, missing QML module specifiers, wrong QML type names, incorrect arguments for the \fn command, and missing documentation. Remove incorrect statement from the example usage of the Waypoint QML type. Use 'QtLocation' as the name for the module throughout the docs. Clang (used as the parser for QDoc in Qt 5.11) was unable to resolve the path for qlocation.h, causing QDoc to omit the QLocation namespace documentation. Fix this by including the file explicitly from qlocationglobal.h for documentation builds. Change-Id: I2bd790db1ff5ad96f0cdb415a682b97593b3a6dc Reviewed-by: Martin Smith <martin.smith@qt.io>
* Fix re-set map items rendering stale geometryPaolo Angelelli2018-03-011-2/+8
| | | | | | | | Geometries are now cleared if data is invalid, before early return. Task-number: QTBUG-66758 Change-Id: Ie89248f78b5fd817a33ed5d6ff56b3547d64a50b Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Allow plugins to use alternative map projectionsPaolo Angelelli2018-01-271-21/+27
| | | | | | | | | | | | | | | | | | | | | | | | QtLocation mapping has always been geared around the WebMercator projection. Some mapping SDKs support additional projections, such as General Perspective (often called globe view or globe rendering). The goal of this patch is to allow a plugin to provide such a view, disabling WebMercator specific features, and redirecting API calls to plugin-specific implementations. In particular, this patch disables the rendering of Map Items (QDeclarativeGeoMapItemBase and sons) for projections different from WebMercator, with the exception of MapQuickItems. MapQuickItems, in turn, lose the ability to draw "on the map", when the projection is different from WebMercator. However, they can still be used to add geolocated popups, buttons and other UI elements. fitViewportToMapItems is also disabled, for both it can't be computed and there wouldn't be any item to fit (with the exception of mapquickitems) Change-Id: I9fa2fdd01a35a078fc4663efc9d269c4ecaa3f41 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Mapbox GL native circle supportBruno de Oliveira Abinader2017-08-301-5/+5
| | | | | | | | | | Circles crossing one pole are drawn inverted. Circles crossing 2 poles do not even have the correct geometry. Nevertheless, a first approximation. Task-number: QTBUG-58869 Change-Id: I5a508f5d6e27c4f08412a7ae327883866068a1e9 Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io>
* Fix MapCircle artifacts with small radiusesPaolo Angelelli2017-08-031-7/+22
| | | | | | Task-number: QTBUG-62154 Change-Id: I86647b0509b4682ea6fde1305834b6a86b0b6f64 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Rename libclipper namespaceThiago Marcos P. Santos2017-04-101-2/+2
| | | | | | | | | | | So it won't clash with the libclipper used by the Mapbox GL plugin when linking Qt with -static. With -static, all the plugins are linked together instead of each one having its own shared library, thus, hiding private symbols. Change-Id: I33ee4afd4b83741c5f3fae32a88da7f4a7fee75f Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io>
* Check for map in map item's geometryChangedPaolo Angelelli2017-03-271-1/+1
| | | | | | | | | Add additional sanity checks to do the geometry changing only if the map() has been set already (that is, the item has been added to the map) Change-Id: Id5b5faa41c68c80c3ad322f408b7a8abe5d2f7ab Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Cache coordinate projections in map itemsPaolo Angelelli2017-03-221-34/+47
| | | | | | | | | | | | This patch caches the result of geoToMapProjection() for the coordinates of the map items, regenerating this data only upon coordinate changes. This allows avoiding to perform a (mercator) projection basically every time the item has to be drawn, and instead do only the wrapping around the camera center and the projection to screen Task-number: QTBUG-59479 Change-Id: Iea5ec04f360d2fe7495cd9c1dd278e83200e0f8d Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Use qRadiansToDegrees() and qDegreesToRadians() more widelyEdward Welbourne2017-02-271-6/+1
| | | | | | | | | | | | | | They document intent more clearly (and replace *two* local hand-rolled versions of each). Also kill an extraneous #include of <math.h>; and switch to qmath.h as source for M_PI, replacing the M_PID value (and friends) previously provided by (thankfully private) qlocationutils_p.h (at more precision than even long double would retain - qmath.h's M_PI is entirely sufficient even for long double, as is the Linux <math.h> one). Task-number: QTBUG-58083 Change-Id: I6fa4abd3c8ed9c826998f2cdc2aefc51681c19c1 Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io>
* Support for Mapbox GL Native rendering of QML Map{Polygon,Polyline} itemsBruno de Oliveira Abinader2017-02-141-1/+1
| | | | | | | | | | | | Replaces Mapbox GL Native annotations with runtime styles API. Missing: - Map{Polygon,Rectangle} border width property - see QTBUG-58872 for details. - MapCircle support - see QTBUG-58869 for detais. Change-Id: I77c9daee813a63efc60104f94f440f00ac3cf70f Reviewed-by: Thiago Marcos P. Santos <tmpsantos@gmail.com> Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io>
* Remove dirty geo* flags from map itemsv5.9.0-alpha1Paolo Angelelli2017-02-131-7/+0
| | | | | | | | | | | The recommended way for a plugin to get notification for when to update items is to connect to the item's signals. Therefore these introduced dirty flags that would have to be checked in a loop can be removed. Change-Id: I28c9b236b3a2e6296a89649b604381a2001a0b20 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Remove unused qgeocameracapabilities includes from map itemsPaolo Angelelli2017-02-101-1/+0
| | | | | Change-Id: I79915a496984253b2c84334aabeb99acd5bd603d Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Clean up dead code and TODO commentsPaolo Angelelli2017-01-301-52/+1
| | | | | | | | This patch cleans up dead or disabled code and TODO comments added with change c57d42b47004623db9b934d0688180ec6dc1a73e Change-Id: I2817f20c8eb56386f8dbee2c661e3034f48caa30 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Allow QGeoMap to render map itemsPaolo Angelelli2017-01-301-0/+12
| | | | | | | | | | | | | | | | | Currently QtLocation Map items are always rendered by QtLocation, on top of what QGeoMap generates. This patch introduces a new private api call to QGeoMap, supportedMapItemTypes(), that is used to inform QtLocation to not render map items of those types, but rather pass them over to the QGeoMap, which will take care of the rendering. In this way, more advanced renderers can properly render map items, for example below labels or 3D buildings. Change-Id: I1c82d4f11d4dd44c3011926512520d62e26295d4 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Moving location qml implementation to location/declarative*Paolo Angelelli2017-01-261-0/+728
QtLocation quick classes and headers are moved out of the import directory. The location quick classes are now in a subdirectory inside the main qtlocation module. This is necessary in order to privately export certain classes, such as Map Items classes, and create an API to inject these objects into QGeoMap to let plugins render the Map Items directly Change-Id: Ia6ba5f07c4eddd3c4c2ce54bf34f1afcd42c2558 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>