summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* Add benchmark example for DeclarativeMapItemsMatthias Rauter2023-02-158-0/+571
| | | | | | Pick-to: 6.5 Change-Id: I42ec79a55eb16d768a3268212272cd06436d24b9 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Correct and improve the rendering of QuickMapItemsMatthias Rauter2023-02-1418-849/+353
| | | | | | | | | | | | | | | | | | | | | | | Various MapItems were not rendered correctly, especially in corner cases. This change ensures that MapItems are rendered correctly in the vast majority of cases. All MapItems are shown correctly if they wrap around the globe and appear twice on the map. Circles that span around the globe or are located near poles are shown correclty and filled all the way to the border of the map. Polygons are shown correctly including their holes. The code was simplified and some artefacts of previous implementations were removed. Fixes: QTBUG-110701 Fixes: QTBUG-110511 Pick-to: 6.5 Change-Id: I1110659989436cd5a93f6ec26f75caa06d5f2b71 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Use new handler API in GeoJson Viewer exampleMatthias Rauter2023-02-141-5/+36
| | | | | | Pick-to: 6.5 Change-Id: I8408c37a2692e93dd420c558147071d07d85523f Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Update dependencies on 'dev' in qt/qtlocationQt Submodule Update Bot2023-02-131-3/+3
| | | | | Change-Id: I79eac60105353e8f416f7c5475eb89c3f140cf31 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Remove old code for rendering MapItems and the respecitve switchMatthias Rauter2023-02-0811-678/+0
| | | | | | Pick-to: 6.5 Change-Id: I59311a3b9d32ca9df3a5b66a6352b45448a52cdc Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Implement all four map items with ShapeLaszlo Agocs2023-02-0814-74/+501
| | | | | | | | | | | | | With a master switch in qdeclarativegeomapitembase_p.h, this is enabled by default. For now the old method is still available by just commenting out the define. The old path can be removed in follow-up patches; for now keeping both so one can compare and debug if further issues arise. Pick-to: 6.5 Change-Id: I01c44ee8a07d7d5f7eb018be33ac5d161ba90e2a Reviewed-by: Matthias Rauter <matthias.rauter@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Use SPDX license identifiersVolker Hilsheimer2023-02-02619-22475/+3001
| | | | | | | Task-number: QTBUG-67283 Pick-to: 6.5 Change-Id: I4b8f877cc355c7c6cd410b3b1683defa58486381 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Update dependencies on 'dev' in qt/qtlocationQt Submodule Update Bot2023-02-021-3/+3
| | | | | Change-Id: I4ef04a6e6d795cad445eb892cd42a8da7d05ae20 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Update dependencies on 'dev' in qt/qtlocationQt Submodule Update Bot2023-02-011-3/+3
| | | | | Change-Id: Ibfe3283b58affdd3badbd234afff4c51ff3ad0d2 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Fix small inconsistencies in the example places_mapMatthias Rauter2023-01-312-19/+12
| | | | | | | | | | Change the search radius in example places_map to get a reasonable amount of results. Replace search term pizza with food to get a reasonable amount of results within 1km radius. Cleaned up some code and replaced static values with bindings. Pick-to: 6.5 Change-Id: I51aedadaf46a1576d033178ec8c0b94222dffca7 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Fix small inconsistencies in the example places_listMatthias Rauter2023-01-312-3/+3
| | | | | | | | | Chang the search radius in example places_list to match the comment. Replace search term pizza with food to get a reasonable amount of results within 5km radius. Pick-to: 6.5 Change-Id: Ibf8a97afb85c80e8cd9b646f2c82d41a836359d2 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Add MapViewShawn Rutledge2023-01-2812-469/+522
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This has nearly complete functionality now. A couple of approaches were possible: one way is to have the Map larger than the MapView, so that the MapView defines a viewport. This allows the handlers to function more "normally": DragHandler already knows how to move the Map in the viewport, etc. But then you can pan off the edge of the Map; so we needed a recenter() function to calculate and set the map.center property, and call that at the right times. This needs to be done when the MapView is resized too, and that turned out to be tricky to get right. Another advantage though would be that we could ensure Map doesn't re-generate geometry any more often than necessary: small changes to the center and scale of the map would often merely change one QSGTransformNode. We could still try this approach again later on, but perhaps Map should be doing more of the work to make it possible; and the new ItemObservesViewport flag ought to be useful. But for now, we do it the existing way: Map does its own viewporting. Thus, we assume that Map is optimized to limit geometry re-generation internally. In practice, redrawing while executing a pinch gesture feels fast enough. One of the main reasons we needed the recent changes in handlers is to get deltas. We cannot use bindings directly from handler properties to Map properties, because there are multiple ways to modify each property (you can zoom by pinch or wheel in MapView, and probably via a keyboard shortcut in the application), so we need to increment the zoomLevel and bearing properties rather than binding them. When it comes to panning: instead of a property, Map has a pan(dx, dy) invokable function; so we call that in response to the DragHandler.translationChanged signal, which now carries a delta-vector argument. The alignCoordinateToPoint() function turned out to be ideal to make the pinch gesture zoom into and rotate the map around the centroid (the point between the touchpoints). Since we call that function when either the rotation or scale changes, we do not need an onTranslationChanged(), because you can't do a pinch gesture that only pans without also changing scale and rotation slightly. All three signals are firing constantly, so handling two of them is enough. The Vector3dAnimation turned out to be a good fit to get flicking momentum (let the panning continue a little while after the finger is released); needing to use the pan() function here is a little clumsy, but we can live with it. Handlers and Animations would both prefer to set properties directly. But if there were a property, it would tend to have type QVector2D or QPointF, and the Vector3dAnimation wouldn't know how to set it anyway (but that could be hacked in, or we could write a Vector2dAnimation). Calculating the limits for zooming seems to be tricky: Map.minimumZoomLevel is zero, but in practice the minimum zoom depends on the size (because we cannot zoom out so far that the map no longer fills the viewport, but if the viewport is smaller, then you can zoom out further). So PinchHandler currently limits the max zoom fairly well, but when you try to zoom out too far, it is Map rather than PinchHandler that applies its own runtime limit. That makes PinchHandler.persistentScale useless; but now PinchHandler applies only incremental zoom deltas, so it doesn't matter. But WheelHandler cannot apply limits on its own, so currently it lets you zoom in too far. Map stops you from zooming past level 30, which is strange, since it already knows that OSM maps are limited to level 18. So either we need to figure out how to calculate both the min and max accurately so that we can apply BoundaryRule (which will also replace the use of PinchHandler's own limits, and will depend on a fix for PinchHandler to work with BoundaryRule), or we can get Map to enforce the lower limit: 18 instead of 30. A little bit of zooming beyond 18 is ok (for example to 20), but if you go even further, the rendering suddenly disappears. This could be done in a followup patch, and a couple of autotests need fixing then. The incremental zooming is treated as base-2-logarithmmic, although that's an approximation: https://wiki.openstreetmap.org/wiki/Zoom_levels tells us that sometimes one zoom level corresponds exactly to zooming 2X, but going from zoom level 16 to 15 is an 8:15 ratio. It's close enough to feel smooth anyway; and it turns out that Map is rendering fractional zoom levels well enough already. If that were not the case, we'd need to bring the Item.scale property into play. Now that the Map is the same size as the MapView, we have a choice whether the root of MapView should be a wrapper Item or not. The root could be Map itself, with handlers inside; the upside would be that all Map properties are left exposed. The downsides would be losing the opportunity to go back to the other architecture later on (with the root defining a viewport, and rendering a larger map inside, but re-rendering less often), and losing the opportunity to make the view's minimumZoomLevel and maximumZoomLevel different than those in Map itself. As explained above, minimumZoomLevel should depend on viewport size. So perhaps it's better to keep it like this: we have control over which Map properties to expose directly, and for the rest, the user can bind to things like mapview.map.center instead of mapview.center. The geojson example is updated to use MapView, whereas minimal_map applies its own handlers to the Map. Other examples still need updating. [ChangeLog][MapView] MapView is the interactive replacement for the Map item in earlier releases. It wraps a Map instance with pointer handlers to make it interactive. Pick-to: 6.5 Fixes: QTBUG-68108 Change-Id: Ibf6bcf71fa7588fcf8cf117e213f35cebd105639 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Remove all C++ event handling, prep for pointer handlersShawn Rutledge2023-01-289-2563/+16
| | | | | | | | | | | | | The QML Map type is now non-interactive. The plan is to replace QQuickGeoMapGestureArea with a set of pointer handlers on top of Map, probably in a new QML type called MapView. [ChangeLog][Map] Map is now non-interactive, concerned only with rendering. Pick-to: 6.5 Task-number: QTBUG-68108 Change-Id: Ie64ffd13abc2b3e00d8e90043f3bb672299f4f15 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Get Map.minimum/maximumZoomLevel from camera rather than gesture areaShawn Rutledge2023-01-282-21/+6
| | | | | | | | | | The gesture area will eventually be eliminated; but PinchHandler needs to have minimum/maximumScale set, so it's not useful to ever have those values being NaN. Pick-to: 6.5 Change-Id: Ib69de2370038711a0704f870e005be3b83f9655c Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Fix the broken test after the retirement of qt_parse_all_argumentsAmir Masoud Abdol2023-01-211-1/+1
| | | | | | | | | | As we are now processing the arguments with cmake_parse_arguments(PARSE_ARGV, we don't need to pass the escape characters anymore. Task-number: QTBUG-99238 Change-Id: I618d4cd0105988bffb1d496fa2b3149d0e609710 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* Update MapQuickItems correctly after a size changeMatthias Rauter2023-01-191-2/+3
| | | | | | | | | | The position of MapQuickItems was not updated after a height change. The function setCameraData(...) did not update the position. Fixes: QTBUG-100333 Pick-to: 6.5 Change-Id: I86310000d04b00bfd3de0e7ef3cdc854f2b08a46 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Update dependencies on 'dev' in qt/qtlocationQt Submodule Update Bot2023-01-171-3/+3
| | | | | Change-Id: Ib5fbe630f740aee8cb6a4ba65b88ab58a989c7e4 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Remove unused extraParametersVolker Hilsheimer2023-01-138-82/+1
| | | | | | | | | No plugin implements or uses it, and we could use dynamic properties to pass more data through to backend implementations, if needed. Pick-to: 6.5 Change-Id: Ie7cbc1e24fadf51e5f39e0ced53860e6a2c6609b Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Update dependencies on 'dev' in qt/qtlocationQt Submodule Update Bot2023-01-121-3/+3
| | | | | Change-Id: I6adb86edb4802eff3abef811cd1f92edae96adcd Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Update dependencies on 'dev' in qt/qtlocationQt Submodule Update Bot2023-01-091-3/+3
| | | | | Change-Id: If540ed89bf9ffff5f43c8435bae90fde4376c068 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Add Title and Streetnumber to QPlaceSearchReplyOsmMatthias Rauter2023-01-051-3/+4
| | | | | | Pick-to: 6.5 Change-Id: I94e6c673b8aa3ccdc6adf4b3ce5a87b13415475b Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Update dependencies on 'dev' in qt/qtlocationQt Submodule Update Bot2023-01-041-3/+3
| | | | | Change-Id: Ib5f195aa8c6bb11f0ab9a1085e46dc2b88fe73fd Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Update dependencies on 'dev' in qt/qtlocationQt Submodule Update Bot2023-01-031-3/+3
| | | | | Change-Id: Ica33137e52d2b51806c550a6a67f0cfef5d6fb50 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Remove QT_USE_SYNCQT_CPPAlexey Edelev2023-01-021-2/+0
| | | | | | | | Option has not effect anymore. Pick-to: 6.5 Change-Id: I3620588769bfa98b8219ed44a37dd2d5adec1b29 Reviewed-by: Kai Köhne <kai.koehne@qt.io>
* Update dependencies on 'dev' in qt/qtlocationQt Submodule Update Bot2022-12-211-3/+3
| | | | | Change-Id: I8b4ed5b0fdaff35cbf7b508018df12c8e95cc68e Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Update dependencies on 'dev' in qt/qtlocationQt Submodule Update Bot2022-12-161-3/+3
| | | | | Change-Id: I64621e6415da237422365d6928f3e3c8ecdd63ab Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Bump version to 6.6.0Jani Heikkinen2022-12-161-1/+1
| | | | | Change-Id: Iecb97ff0266786b295ff73ef08b15f403f6d36a1 Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
* Update dependencies on 'dev' in qt/qtlocationQt Submodule Update Bot2022-12-121-3/+3
| | | | | Change-Id: I0aa5d4aae52e21663b6c5ef918e48b14a9f46e62 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Update dependencies on 'dev' in qt/qtlocationQt Submodule Update Bot2022-12-081-3/+3
| | | | | Change-Id: I21b380c92eb6cb3e833a9f38ed2de8e0e4b4fa0f Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Mark the module as free of qAsConst()Marc Mutz2022-12-0717-30/+32
| | | | | Change-Id: Ie67ec9b4f1f808b3b70ca7beb98f90c9cd1f2a9f Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Update dependencies on 'dev' in qt/qtlocationQt Submodule Update Bot2022-12-051-3/+3
| | | | | Change-Id: Ib19155a2def4fa7c5fbc619ec5e9d3cb2e01e679 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Remove "OpenGL" map item implementationsLaszlo Agocs2022-12-0225-3113/+0
| | | | | | | | | | | | The aim is to have a single solution. And due to certain cases falling back to the default ("CPU") path, this "OpenGL" path is not complete on its own. In addition, some rendering features are not implemented (caps and joins), meaning additional work is needed still to be on par with the default item rendering path. Change-Id: Ie67c8b5ac002c6660f3808c10d9fd9276a16e47e Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Clean up: move QGeoRouteParserOsrmV4 into OSM pluginVolker Hilsheimer2022-12-026-5/+5
| | | | | | | | | It's only used there. Need to privately export QGeoRouteParserPrivate for this. Change-Id: I0342dc31836a9db731f495434b9d4c7dd5973af2 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* Remove map item backend switchLaszlo Agocs2022-11-3013-398/+0
| | | | | Change-Id: Ic1ed064269ac73e68d0358b373ea1e8048a1c241 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Update dependencies on 'dev' in qt/qtlocationQt Submodule Update Bot2022-11-291-2/+2
| | | | | Change-Id: I7e85f2ed97d32cdbff0fcc4b0d5294bc1227e338 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Remove QDeclarativeGeoWaypointVolker Hilsheimer2022-11-283-446/+37
| | | | | | | | | | | | The type was introduced as a QML-wrapper around QGeoCoordinate, which is now a registered value type for QML. QGeoCoordindate doesn't have a bearing property, but as waypoints could be initialized with a list of QGeoCoordinate anyway, 'bearing' was only inconsistently supported. If we want to bring that back, then it might be best to add an optional bearing to QGeoCoordinate in Qt Positioning. Change-Id: I3d8cb64f3552dc5580945b17c3a9092a7205b9b8 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Documentation fixesVolker Hilsheimer2022-11-2830-250/+100
| | | | | | | | | | | | Correct spelling of and links to QML value types and to properties of value types. Remove some documentation and snippets that are mostly outdated, and links to specific plugin providers. Silence some warnings. Task-number: QTBUG-96795 Change-Id: Ifba3ae8144e0d949f1c72a4ea230e7f84fa28bd4 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Update dependencies on 'dev' in qt/qtlocationQt Submodule Update Bot2022-11-261-3/+3
| | | | | Change-Id: I101428b5fbee76b3044314932b766d7732865dca Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Update dependencies on 'dev' in qt/qtlocationQt Submodule Update Bot2022-11-261-5/+5
| | | | | Change-Id: Ia8b19f0d84e91fe9e9870344b3e7e05710501142 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Remove missing file from geojson exampleVolker Hilsheimer2022-11-241-1/+0
| | | | | Change-Id: Ib5b7466cfd3ae20ebfb8615b7f9b10323b2fc1b7 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Replace QT_HAS_INCLUDE() wrapper macro with __has_include()Tor Arne Vestbø2022-11-221-1/+1
| | | | | | | | | | | | | Using wrappers for these macros is problematic when for example passing the -frewrite-includes flag to preprocess sources before shipping off to distcc or Icecream. It will also start producing warnings when compilers implement http://eel.is/c++draft/cpp.cond#7.sentence-2. See for example https://reviews.llvm.org/D49091 See qtbase change c3bd5ffdc8a3b459f18ba6e35fca93e29f3b0ab0. Change-Id: Ib3b39c2f47816b8a92ffcc0432322cb0d1ea7dbf Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Manually update dependencies on 'dev' in qt/qtlocationVolker Hilsheimer2022-11-221-3/+3
| | | | | Change-Id: I28a1ad9cf1eb28a8432ef223d8b83b981ef64494 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Polyline: Remove unused backend enum valuesLaszlo Agocs2022-11-152-4/+2
| | | | | | | Have just what is in the other items (Software, OpenGL). Change-Id: I3a8b387fb7a98c9e5580a22cb8af3568c1849434 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Revive mapitems_backends manual testLaszlo Agocs2022-11-151-22/+16
| | | | | | | | Fix up the imports so that the qml file loads. Then follow the changes for the available polyline backends. Change-Id: I01a229264275ef0b89eb71332b06da0be0097b08 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Revive mapobjects_tester manual testLaszlo Agocs2022-11-151-19/+14
| | | | | | | | Fix up the imports so that the qml file loads. Then follow the changes for the available polyline backends. Change-Id: Idbf4049523ddd8d6857911f76e973a7e24064b42 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Simplify by removing the LineStrip mode for MapPolylineLaszlo Agocs2022-11-1517-347/+73
| | | | | | | | | | | | | | | | | | | | | | Have two modes (Software, OpenGL) for polyline, as it is the case for all other items (rectangle, circle, polygon). OpenGLLineStrip is removed completely, whereas the enum value OpenGL is added with the same value as OpenGLExtruded for symmetry with other items. Drawing lines and expecting wide line (width > 1) support to be avilable is highly non-portable: Direct 3D, Metal, and core profile OpenGL contexts will not support widths other than 1, whereas with Vulkan wide lines are an optional feature so it may or may not work. As the 'backend' property is already marked as internal, it won't present any consequences when it comes to the public API. Internally this requires some untangling of the somewhat intertwined node and material implementations. Change-Id: I175ddb5f84128ed4d0fcf2939272e631566ff327 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Get the geojson example working againShawn Rutledge2022-11-156-193/+9
| | | | | | | | | | | | | | | | | | fdbbfa4a6723b816478ee011ab4098e5332dc2f5 removed MapObjectView, but this example continued to depend on it. This reverts parts of commit be7cbed7411d024d178377bd327d5916c80e02a0. Also: - use QtCore.StandardPaths rather than Qt.labs.platform - remove the widgets dependency - use FileDialog.nameFilters to read and write geojson files Let's assume that FileDialog.selectedFile will actually output a QUrl to save the file to, as opposed to a plain path, since the dumpGeoJSON() function is calling toLocalFile() on it. At least that works with native dialogs. Task-number: QTBUG-108455 Change-Id: I1f14c6425115aa95ac2080438ff0c3a24b1b7196 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Android: use string based location permission callsAssam Boudjelthia2022-11-141-1/+3
| | | | | | | | | Amends ef935f6e37a24f52255e6696b85a0fa9aaa7361a. Go back to string based calls until the new permissions API is fully used. Change-Id: If3c1d63ac0267e820fec89dc63cf801022c1f84a Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* Manually update dependencies on 'dev' in qt/qtlocationVolker Hilsheimer2022-11-141-3/+3
| | | | | Change-Id: Id05f788e88f8ebc2f68e19b7240387ee342ea788 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Add SILENT to qt_add_shaders callLaszlo Agocs2022-11-071-0/+1
| | | | | | | | For consistency with qtdeclarative, and to keep the configure and build output from CMake clean. Change-Id: I8d46051f2021803ccc565d3b4f10ca48e344efe5 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>