summaryrefslogtreecommitdiff
path: root/src/location/maps
Commit message (Collapse)AuthorAgeFilesLines
* Make QGeoMapParameter accessors virtualPaolo Angelelli2017-11-231-2/+2
| | | | | | | | So that it's possible to make the type property somehow constant in subclasses Change-Id: I61f4d1b412dbfb173e7ca7fa31411cffbfcfacb1 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Fix Map.fromCoordinate returning wrong values during tiltingPaolo Angelelli2017-09-211-5/+15
| | | | | | Task-number: QTBUG-63251 Change-Id: I7ceeeebb30007c5d97d61e057c8ec6e827177b19 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Fix tile cache not honoring cost 0Paolo Angelelli2017-09-112-9/+33
| | | | | | | | | This patch fixes the case of disabling the various caches. Currently setting the cache size to 0 results in default initial values instead. Change-Id: I019cd15ac23b6479e4367a3e102dd661895a7fda Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Fix routes comparisonBogDan Vatra2017-08-091-2/+2
| | | | | Change-Id: Ie02061804efdb79911a997bd017d13ed0d65d262 Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io>
* Fix visible region computation in QGeoProjectionWebMercatorPaolo Angelelli2017-08-091-4/+16
| | | | | | | | | | | | | | | | | | | | | Currently the visible region is calculated as the intersection between the viewing frustum and the map plane clipped against the map extended rectangle in mercator space (from -1 to 2 in x coords, 0 to 1 in y coords). The result is correct in the extended mercator space. However, this may lead to overlapping coordinates when converted back to latitude and longitude. For this reason, this patch changes the clipping geometry to be the map un-extended rectangle centered around the current map center. The result is a geometry that never wraps around or overlaps, thus removing the need for handling separately the case when the map is fully visible when returning the visible region. Task-number: QTBUG-57690 Change-Id: I8396c40a123ce94bff4388dfefbd8a694657b8bd Reviewed-by: BogDan Vatra <bogdan@kdab.com>
* Fix memleak: delete QGeoMap when QDeclarativeGeoMap gets deletedBogDan Vatra2017-07-281-4/+2
| | | | | | Task-number: QTBUG-62122 Change-Id: I538e1eeb6bce3f5de424003b0b31fa59599dc2d5 Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io>
* Fix dragging items out of map boundsPaolo Angelelli2017-07-282-6/+55
| | | | | | | | | | | | | | | | | | | | | | | | | In 5.9.0 map items are clipped against the visible region. This implies that their geometry is also clipped against the visible region. This is problematic in ::geometryChanged, since the old geometry is always clipped in this way. This patch clips items against a "projectable" region instead, that is the part of the map that is in front of the camera. Since this can produce very large vertices, mapbox earcut 3rd party library is pulled in, to replace qTriangulate that only supports coordinates up to 1<<21. This patch also contains a fix for earcut.hpp to make it build also on QNX6.6 Task-number: QTBUG-61727 Change-Id: Iffc95fdae88fef982c1eb86db567b326b5e51057 Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io>
* Revert "Fix dragging items out of map bounds"Paolo Angelelli2017-07-192-55/+6
| | | | | | | | This reverts commit 2ab93acd9751b3ffe2c36a4a0e37dc792686a08f. Reason being: not passing QNX6 bot Change-Id: If45fe095b6e6959f7c40e3e0ed7a14d278bbb230 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Fix dragging items out of map boundsPaolo Angelelli2017-07-172-6/+55
| | | | | | | | | | | | | | | | | | | | | In 5.9.0 map items are clipped against the visible region. This implies that their geometry is also clipped against the visible region. This is problematic in ::geometryChanged, since the old geometry is always clipped in this way. This patch clips items against a "projectable" region instead, that is the part of the map that is in front of the camera. Since this can produce very large vertices, mapbox earcut 3rd party library is pulled in, to replace qTriangulate that only supports coordinates up to 1<<21. Task-number: QTBUG-61727 Change-Id: I7449e755a4848a2b2107c5de4e27821e3e887bfb Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io>
* Fix Map.toCoordinate always clamping y values to 0Paolo Angelelli2017-07-172-8/+32
| | | | | | | | | | | | This patch allows to call toCoordinate also on negative y values, given that the y value is still below the horizon. If not, the y value will be clamped to the "minimum unprojectable y value", a value that is clamped to 0. Task-number: QTBUG-61813 Change-Id: I177d3b459b6eaf827daf860b7d4011511a7e76ee Reviewed-by: Alex Blasche <alexander.blasche@qt.io> Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io>
* Fix build with -qreal floatPaolo Angelelli2017-06-211-1/+1
| | | | | | Task-number: QTBUG-61538 Change-Id: Ib1e5cbe1bdcfc324e3e9dcaca7045c9318a5059e Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Fix compilation error without openglPaolo Angelelli2017-06-181-0/+2
| | | | | | | | If opengl is not present, now that warnings are error, Location fails to build due to an unused ogl variable. Change-Id: Id1e9a1f4da8bc31a65e29b3dd2770250284d02bb Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Refactor: move code not depending on "this" into static methodsPaolo Angelelli2017-05-292-57/+70
| | | | | | | | | | | This patch moves the implementation of the default filenameToTileSpec and tileSpecToFileName methods into standalone public static methods so that they can be possibly reused by plugins or other components, since these implementations do not actually depend on any member of QGeoFileTileCache. Change-Id: I6e3f59615ff3a5e0924f946aa13aabebb8157e42 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Fix building on configurations without openglPaolo Angelelli2017-05-201-0/+4
| | | | | | Task-number: QTBUG-60881 Change-Id: Iffdcfe1ebfe81da9b809dceeff61fca044e94891 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Add a way to skip showing tilesPaolo Angelelli2017-05-084-7/+28
| | | | | | | | | | | | | | | In certain cases servers provide tiles that can be fully transparent, provide no content or are bogus. Tile fetchers can be smart and detect some of these cases. This patch offers an extensible way to allow them to communicate (via a null QImage) tiles that should not be rendered, in addition to an extensible mechanism to identify such tiles on disk. The default way is by assuming that, once such tiles have been detected, the tile fetcher would simply write a file with "NoRetry" as content. Change-Id: I404bb4dcc38fdd33c412f7407601b47947e4ce8d Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Workaround for QGeoFileTileCache losing contentv5.9.0-beta4Paolo Angelelli2017-05-071-2/+4
| | | | | | | | | This patch disables the queue persistence, that causes the cache to fail indexing valid content present in the cache on disk Task-number: QTBUG-60581 Change-Id: Iec3ba6105fe59a6f466bfabf0db4bf4fc00267af Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Add pluginName to QGeoMapType and check against it in setActiveMapTypePaolo Angelelli2017-05-073-9/+19
| | | | | | | | | | | This patch adds a QByteArray member to QGeoMapType with the name of the plugin providing that map type. This value is then used to validate what is passed to QDeclarativeGeoMap::setActiveMapType to see if it's a map type for the currently set plugin. Change-Id: If15b67c32150f0c3c2815d28e26fc37138d4cf71 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Evaluate the visible region lazily in QGeoProjectionWebMercatorPaolo Angelelli2017-05-032-6/+19
| | | | | | | | | | | | | | This change optimizes QGeoProjectionWebMercator::setupCamera, factoring out the code that calculates the visible region, and replacing it with a dirty flag. The computation is deferred to the first time visibleRegion() gets called. This is done because the visible region is currently only used to render some types of map items, meaning that in a multi layer setup, only few layers might need it. Change-Id: I5dd75969581513eb60e3cf5d6ba649349bf25378 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Fix for nearest scaling still being used in overzoomPaolo Angelelli2017-04-281-0/+1
| | | | | | | | An assignment was missing to make the overzooming bool actually kick in. Change-Id: I5f6e52016026af050c734bca31e45f06fbbdb9b5 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Make QGeoTileFetcher::handleReply virtualPaolo Angelelli2017-04-281-1/+1
| | | | | | | | Tile fetchers may need to override this one to better analyze the reply content and possibly validate it. Change-Id: Ia3445017ad7b44d719a1ce28b811d9145373e397 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Clarify overzoomEnabled property of QGeoCameraCapabilitiesv5.9.0-beta2Paolo Angelelli2017-04-121-0/+8
| | | | | Change-Id: If6f8fd446c562d6ccaf368e1d5afb5eee113fece Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Fix export in QGeoCameraCapabilitiesPaolo Angelelli2017-04-121-2/+2
| | | | | Change-Id: I1fff4d22c11c540b955abbfeb0707c8622291bef Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Allow overzooming when setting zoomLevel directly in a MapPaolo Angelelli2017-04-122-3/+32
| | | | | | | | | | | | | This patch moves the lower/upper bound check on setZoom from QDeclarativeGeoMap to the gesture area, allowing to set higher zoom levels than the maximumZoomLevel when setting Map.zoomLevel directly, for the map types that support overzoom. This is now safe as the bound check is introduced in the tile fetcher, so no invalid tiles will be requested, and is beneficial when combining layers supporting different maximum zoom levels. Change-Id: I08ee9c282ee2ebc1dafa3c68a238b93ffbc1ba02 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Bound check QGeoTileSpec against min/max ZL before requesting itPaolo Angelelli2017-04-123-6/+17
| | | | | | | | | | | | | | | | | | Until now we have not honored the min/max zoom levels specified in QGeoCameraCapabilities when requesting tiles. As a result we have often fired requests for non-existing tile layers. This change complements the added support for individual camera caps for each map type, and makes the tile fetcher honor the bounds defined in the camera capabilities. This also allows to set larger zoom levels in the renderer, overzooming existing tiles, without the fetcher firing requests for invalid resources Change-Id: Ic8a523a114147109f7ef8af3510a3ab78d06d714 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Replace QGeoMapType argument of cameraCapabilitiesPaolo Angelelli2017-04-123-5/+5
| | | | | | | | | | Since the only part of QGeoMapType used in the method is mapId, there's no need to pass the whole map type as argument. The benefit is that the camera caps can be requested solely based on the info in QGeoTileSpec. Change-Id: Iafd0e2a1d4d45fbf02b862efe56841001cbebd75 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Remove QtGui dependency from QDoubleMatrix4x4Alex Blasche2017-04-111-0/+1
| | | | | | | | | This fixes the -no-gui build. Task-number: QTBUG-60062 Change-Id: I71400dfddac8ddf6a74906be8ba1272bf4a86781 Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Prevent accessing invalid QGeoTileSpec from QHash look-upsPaolo Angelelli2017-04-111-9/+13
| | | | | Change-Id: Ic169824201ed6aeaeb2a482b28da989f9312181d Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Prevent containers from detaching within for loops in QGeoTiledMapScenePaolo Angelelli2017-04-111-6/+6
| | | | | Change-Id: I7f81f3dab3ef0243c45ec22bafa8687f756134f4 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Replace foreach with ranged for loops in QGeoTiledMapScenePaolo Angelelli2017-04-111-8/+8
| | | | | Change-Id: I7a82c0d63f35d1cfd264801e58089408254757c8 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Use linear filterning whenever overzooming lo-res tilesPaolo Angelelli2017-04-071-7/+9
| | | | | | | | | This patch fixes the incorrect behavior of using nearest filtering at integer zoom level, even if the texture is being overzoomed from a lower zoom level Change-Id: Ia3572399187a6f24829504116602685434ecfc5f Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Fix for camera data not updated in changeActiveMapTypev5.9.0-beta1Paolo Angelelli2017-03-311-1/+2
| | | | | | | | This patch forces a camera data update upon changeActiveMapType, which may change the tile size. Change-Id: Ib371ea7f76267bc4ed8a30eed31ec3887b4a1415 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Fix for QGeoTiledMapPrivate::changeActiveMapType not setting tileSizePaolo Angelelli2017-03-283-5/+20
| | | | | Change-Id: If3e920f4b4cb5bf6310914a258eb3f569de9a8ef Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Add parameter to control prefetching in tile-based geoservice pluginsPaolo Angelelli2017-03-272-0/+3
| | | | | Change-Id: I18fc1788f7af0efe76f97257ffe739eb1a96e6cc Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Allow to disable prefetchingPaolo Angelelli2017-03-272-3/+6
| | | | | | | | | | Add a NoPrefetch PrefetchStyle to allow disabling the prefetching. A new parameter in the geoservice plugin is then needed to effectively disable it. Change-Id: I8b8a2343cbe4f59bd990d25c3381f4a11708860e Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Proactively convert tile formats to ARGB32_PremultipliedPaolo Angelelli2017-03-271-0/+4
| | | | | | | | | | This patch avoids each bind to do this conversion if the format of the tile isn't RGB or ARGB32_Premultiplied. This is the case of PNG with alpha channel, that usually comes as ARGB32. Change-Id: I8f1297dd82ab20b6c8ecac3e68bf5d82e03f2e70 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Enable overzooming tiles in qgeotiledmapscenePaolo Angelelli2017-03-234-14/+62
| | | | | | | | | With this patch tiles from previous zoom levels can be temporarily used to fill the map until the actual tiles are fetched. Task-number: QTBUG-23659 Change-Id: I7db68c82217cb18a9bec2abdc3e679fc0bfb6b94 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Fix for projection mismatch when aspect ratio < 1.0Paolo Angelelli2017-03-223-29/+13
| | | | | | | | | | | This patch fixes an incorrect computation of the projection matrices and thus a mismatch in projections between mbgl vs the other plugins when the window A/R is less than 1.0. Task-number: QTBUG-59417 Change-Id: Ib03eaa4c877a00c9281c335f859c854d6db632c0 Reviewed-by: Bruno de Oliveira Abinader <brunoabinader@gmail.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Lower bound minimum/maximumZoomLevelAt256Paolo Angelelli2017-03-221-2/+2
| | | | | | | | | Without this patch, using tiles of size 128 may cause these methods to return negative values Change-Id: I6476083350fd552756d1388fa9bc8fa36d8c4ee3 Reviewed-by: Alex Blasche <alexander.blasche@qt.io> Reviewed-by: Bruno de Oliveira Abinader <brunoabinader@gmail.com>
* Fix for disappearing MapQuickItems with tilted cameraPaolo Angelelli2017-03-221-12/+4
| | | | | | | | | | | This patch fixes a bug that makes MapQuickItem disappear when the zoomLevel property is set, the camera is tilted and zoomed in very close to the item, causing the coordinate of the map quick item to end behind the camera. Task-number: QTBUG-59397 Change-Id: Iae92204917729eb9daaf8592db318613bf57b966 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Minor build cleanupsBruno de Oliveira Abinader2017-03-211-1/+0
| | | | | Change-Id: I85870f176510d1d6fd51bce94daf58fc326e13b3 Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io>
* Merge remote-tracking branch 'origin/5.8' into 5.9Liang Qi2017-03-101-5/+0
|\ | | | | | | Change-Id: Ibd6d68ced4edbd96fb67fe61244b83d597df5775
| * Fix build with -no-feature-libraryUlf Hermann2017-03-061-2/+0
| | | | | | | | | | | | | | | | | | Drop unnecessary guards around QFactoryLoader (which is available without QLibrary) and drop an unused include. Change-Id: I0368eb857474fc728f1dad76977758b6d773f1d6 Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
| * Remove unused includesPaolo Angelelli2017-03-021-3/+0
| | | | | | | | | | | | | | | | These includes seem to block CI on some configurations Task-number: QTBUG-59243 Change-Id: I10e743302cd9e41036cd1e8e94746fd3b2d817d3 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | Fix MapQuickItem when zoomLevel is setPaolo Angelelli2017-03-082-0/+53
| | | | | | | | | | | | | | | | | | This patch fixes the behavior of MapQuickItem when the zoomLevel is set, that is it makes behave the qquickitem as if it would be on the map, instead of on the screen. Change-Id: Ibb8a6000e2f6a37a68c32df001fc8565079a6f70 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | Optimize QGeoProjectionWebMercator::wrappedMapProjectionToItemPositionPaolo Angelelli2017-03-061-7/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | This patch bakes all the required linear transformations performed in the method inside a 4x4 double matrix, removing 4 of the 5 instructions previously performed. Autotest adaptations with compares instead of verifys have been necessary due to small epsilons in the results. Change-Id: I7795173a27812eb93a48e3175ad24fd546aeec04 Reviewed-by: Michal Klocek <michal.klocek@qt.io> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* | Merge "Merge remote-tracking branch 'gerrit/5.8' into 5.9" into refs/staging/5.9Paolo Angelelli2017-02-281-2/+3
|\ \
| * \ Merge remote-tracking branch 'gerrit/5.8' into 5.9Alex Blasche2017-02-281-2/+3
| |\ \ | | |/ | | | | | | Change-Id: I3c27a0635fa324dfea7a1d19774a66e21c066bbe
| | * Consider devicePixelRatio when enabling tiles mipmappingPaolo Angelelli2017-02-281-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | Tiles are magnified when high dpi scaling factor is used for the app, so the scale factor must be considered when tile size is used to decide whether to switch mipmapping on or not Change-Id: I628ddc82f41bbdb94d0c1c6ed628bc13990f64bf Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* | | Fix frustum footprint calculation in QGeoCameraTilesPaolo Angelelli2017-02-281-148/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The old algorithm for computing the frustum footprint has problems with certain viewport sizes when tilting the map. This patch fixes the problem, and also removes the dependency on a local copy of qsort that was necessary in order for that algorithm to work properly. Task-number: QTBUG-58684 Task-number: QTBUG-34088 Change-Id: I36aaaa90c567cd19a4ae66dba8def0aec0b00534 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* | | Make QGeoCameraCapabilities independent of the enginePaolo Angelelli2017-02-2811-18/+99
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | This patch makes it possible to change QGeoCameraCapabilites at runtime, when the map type changes, to accommodate for those plugins that offer different maps having different capabilities. This is then used to properly push the min/max zoom levels for each map type in our OSM plugin. Autotests are included. Change-Id: I48532da77ffb3eaf2e752561395945c3a2c21985 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>