diff options
author | Matthias Rauter <matthias.rauter@qt.io> | 2023-02-22 18:23:44 +0100 |
---|---|---|
committer | Matthias Rauter <matthias.rauter@qt.io> | 2023-04-11 07:59:01 +0100 |
commit | bd3ca9bd2158c2271cc76173fd747679d7fbd76c (patch) | |
tree | 9fee399b8d4d8ff084fc5e42d86086741b1087eb /examples | |
parent | fbe6f3f4b9456467baa772c6efe40b80aefd1414 (diff) | |
download | qtlocation-bd3ca9bd2158c2271cc76173fd747679d7fbd76c.tar.gz |
Polygons/lines can now be rendered following the shortest path on the globe
This is enabled by interpolating the lines of polygons and paths.
The interpolating is done following the greater circle navigation and the
connection between corners of the polygon appear curved on the projected map.
This behavior can be turned on by setting a new property, called
referenceSurface. It can be set to ReferenceSurface.Map, drawing paths as lines on
the map or to ReferenceSurface.Globe, drawing path on the globe leading to
curves on the map. It is set to ReferenceSurface.Map on default, reproducing
the old implementation for polygons, polylines and rectangles.
The circle item was already using the great circle path before this
change. Its standard implementation was changed to draw a circle in map
coordinates with approximated radius. This should be sufficient for many
cases. To get the old implementation, referenceSurface has to be set to
ReferenceSurface.Map.
Fixes: QTBUG-94785
Change-Id: Ifdd1597a7116c3d220462f063656b04becb6422f
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'examples')
6 files changed, 30 insertions, 7 deletions
diff --git a/examples/location/geojson_viewer/GeoJsonDelegate.qml b/examples/location/geojson_viewer/GeoJsonDelegate.qml index 87b0abfe..075e33e3 100644 --- a/examples/location/geojson_viewer/GeoJsonDelegate.qml +++ b/examples/location/geojson_viewer/GeoJsonDelegate.qml @@ -27,8 +27,9 @@ DelegateChooser { border.color: hh.hovered ? "magenta" : Qt.darker(color) opacity: dc.defaultOpacity color: (props && props.color) || (parent && parent.props && parent.props.color) || dc.defaultColor - autoFadeIn: false //! [DelegateChoice Point] + autoFadeIn: view.autoFadeIn + referenceSurface: view.referenceSurface //! [Handler Point] TapHandler { @@ -57,7 +58,8 @@ DelegateChooser { line.width: 2 opacity: dc.defaultOpacity line.color: hh.hovered ? "magenta" : (props && props.color) || (parent && parent.props && parent.props.color) || Qt.darker(dc.defaultColor) - autoFadeIn: false + autoFadeIn: view.autoFadeIn + referenceSurface: view.referenceSurface TapHandler { onTapped: { @@ -85,7 +87,8 @@ DelegateChooser { color: (props && props.color) || (parent && parent.props && parent.props.color) || dc.defaultColor border.width: 2 border.color: hh.hovered ? "magenta" : Qt.darker(color) - autoFadeIn: false + autoFadeIn: view.autoFadeIn + referenceSurface: view.referenceSurface TapHandler { onTapped: { diff --git a/examples/location/geojson_viewer/main.qml b/examples/location/geojson_viewer/main.qml index 0db8ab2f..aa8bece5 100644 --- a/examples/location/geojson_viewer/main.qml +++ b/examples/location/geojson_viewer/main.qml @@ -105,6 +105,20 @@ ApplicationWindow { geoJsoner.print(miv) } } + MenuItem { + text: "Auto fade in items" + checkable: true + checked: false + onCheckedChanged: view.autoFadeIn = checked + } + MenuItem { + text: "Draw path on globe" + checkable: true + checked: false + onCheckedChanged: view.referenceSurface = (checked ? + QtLocation.ReferenceSurface.Globe : + QtLocation.ReferenceSurface.Map); + } } } @@ -132,6 +146,8 @@ ApplicationWindow { //! [MapView Creation] property variant unfinishedItem: undefined + property bool autoFadeIn: false + property variant referenceSurface: QtLocation.ReferenceSurface.Map signal showMainMenu(variant coordinate) diff --git a/examples/location/geojson_viewer/mapitems/CircleItem.qml b/examples/location/geojson_viewer/mapitems/CircleItem.qml index 2f6790e7..637f22be 100644 --- a/examples/location/geojson_viewer/mapitems/CircleItem.qml +++ b/examples/location/geojson_viewer/mapitems/CircleItem.qml @@ -9,7 +9,8 @@ MapCircle { border.width: 2 smooth: true opacity: 0.75 - autoFadeIn: false + autoFadeIn: view.autoFadeIn + referenceSurface: view.referenceSurface property string geojsonType: "Point" diff --git a/examples/location/geojson_viewer/mapitems/PolygonItem.qml b/examples/location/geojson_viewer/mapitems/PolygonItem.qml index 2dcd4e11..a21e2037 100644 --- a/examples/location/geojson_viewer/mapitems/PolygonItem.qml +++ b/examples/location/geojson_viewer/mapitems/PolygonItem.qml @@ -9,7 +9,8 @@ MapPolygon { border.width: 2 smooth: true opacity: 0.75 - autoFadeIn: false + autoFadeIn: view.autoFadeIn + referenceSurface: view.referenceSurface property string geojsonType: "Polygon" diff --git a/examples/location/geojson_viewer/mapitems/PolylineItem.qml b/examples/location/geojson_viewer/mapitems/PolylineItem.qml index cea4111c..ed005305 100644 --- a/examples/location/geojson_viewer/mapitems/PolylineItem.qml +++ b/examples/location/geojson_viewer/mapitems/PolylineItem.qml @@ -8,7 +8,8 @@ MapPolyline { line.width: 2 opacity: 0.75 smooth: true - autoFadeIn: false + autoFadeIn: view.autoFadeIn + referenceSurface: view.referenceSurface property string geojsonType: "Polyline" diff --git a/examples/location/geojson_viewer/mapitems/RectangleItem.qml b/examples/location/geojson_viewer/mapitems/RectangleItem.qml index 02946ef9..cafe5bed 100644 --- a/examples/location/geojson_viewer/mapitems/RectangleItem.qml +++ b/examples/location/geojson_viewer/mapitems/RectangleItem.qml @@ -9,7 +9,8 @@ MapRectangle { border.width: 2 smooth: true opacity: 0.75 - autoFadeIn: false + autoFadeIn: view.autoFadeIn + referenceSurface: view.referenceSurface function setGeometry(anchorCoordinate) { topLeft = anchorCoordinate |