Karten und Navigation (QML)

Karten und Navigation bietet QtQuick Benutzerschnittstellentypen für die Anzeige von geografischen Informationen auf einer Karte und ermöglicht die Interaktion des Benutzers mit Kartenüberlagerungsobjekten und der Anzeige selbst. Außerdem enthält es Dienstprogramme für die Geokodierung (Ermittlung einer geografischen Koordinate aus einer Straßenadresse) und die Navigation (einschließlich Fahr- und Gehanweisungen).

Für die Navigation benötigen wir routes vom Start zum Ziel. Diese Routen bestehen aus Segmenten, wobei jedes routeSegment als Teilaufgabe der Navigation betrachtet werden kann, z. B. "fahre 100 Meter" oder "biege links ab". Der Anfang und das Ende eines jeden Abschnitts ist ein Wegpunkt, d. h. ein Teil der Reise.

Ein typischer Anwendungsfall für die API ist die Suche eines Nutzers nach einem bestimmten Ort, z. B. einem Restaurant; der Nutzer gibt einen Suchbegriff in die Kartenanwendung ein und erhält eine Ergebnisliste mit Restaurants in der Nähe seines Geräts. Die Anwendung kann dann verwendet werden, um zum gewählten Ziel zu navigieren, wobei die Route anhand von Merkmalen in der Umgebung, die die Reise erleichtern oder erschweren könnten, optimiert wird. Die Navigation wird dann fortgesetzt, wobei der Fortschritt des Benutzers anhand des aktuellen Standorts überwacht wird.

Die Typen bauen auf den API-Konzepten und Typen der QML Positioning API auf. Eine praxisnahe Einführung in die Typen Karten und Navigation finden Sie im Tutorial Karten und Navigation.

Karten

Anzeige von Karten

Die Anzeige einer Karte erfolgt über die Map QML-Typen. Der Kartentyp unterstützt die Benutzerinteraktion durch den MapView QML-Typ. Das Map-Objekt zeichnet die Karte auf dem Bildschirm unter Verwendung von OpenGL (ES), was ein hardwarebeschleunigtes Rendering ermöglicht, sofern verfügbar.

Schlüsseltypen

PluginEin Plugin für standortbezogene Dienste stellt Daten einschließlich Kartendaten bereit, die dann in einem Kartenobjekt angezeigt werden.
MapQtQuick Element zur Anzeige einer Karte auf dem Bildschirm.
MapViewInteraktionshilfe für Schwenken, Streichen und Pinch-to-Zoom-Gesten auf einer Karte.

Beachten Sie, dass der Client vor der Verwendung eines Map Typs ein Plugin Objekt erstellen muss, um Zugriff auf die anzuzeigenden Kartendaten zu haben.

Einfügen von Objekten in eine Karte (Karten-Overlay-Objekte)

Karten können auch Karten-Overlay-Objekte enthalten, die zur Anzeige von Informationen auf ihrer Oberfläche verwendet werden. Es gibt eine Reihe grundlegender vordefinierter Kartenüberlagerungsobjekte sowie die Möglichkeit, benutzerdefinierte Kartenüberlagerungsobjekte unter Verwendung des Typs MapQuickItem zu implementieren, der jedes beliebige Standardelement enthalten kann QtQuick.

Schlüsseltypen

MapCircleEin geografischer Kreis (alle Punkte in einem bestimmten Abstand von einem Zentrum), optional mit einem Rand.
MapRectangleEin Rechteck, dessen oberer linker und unterer rechter Punkt als coordinate Typen angegeben sind, optional mit einem Rand.
MapPolygonEin Polygon, das aus einer beliebigen Liste von coordinates besteht.
MapPolylineEin Linienzug aus einer beliebigen Liste von coordinates.
MapQuickItemVerwandelt ein beliebiges QtQuick Element in ein Karten-Overlay-Objekt. MapQuickItem ist ein Enabler für die Angabe von benutzerdefinierten Karten-Overlay-Objekten.

Modell-Ansicht-Design mit Karten-Overlay-Objekten

Um automatisch Map-Overlay-Objekte auf der Grundlage des Inhalts eines QtQuick Modells (z. B. eines ListModel Elements) zu erzeugen, steht der Typ MapItemView zur Verfügung. Er akzeptiert ein beliebiges Map-Overlay-Objekt als seinen Delegaten und kann nur innerhalb eines Map erstellt werden.

Schlüsseltypen

MapItemViewFüllt eine Karte mit Map-Overlay-Objekten auf der Grundlage der von einem Modell bereitgestellten Daten.

Interaktion mit Map-Overlay-Objekten

Die Eigenschaften von Karten-Overlay-Objekten, die ihr Erscheinungsbild auf der Anzeige beeinflussen, können jederzeit geändert werden, und viele können auch in Animationen verwendet werden. Die Animation von koordinatenbasierten Karten-Overlay-Objekten, wie MapPolygon und MapPolyline, ist noch nicht verfügbar.

Geokodierung - Adresse zu Koordinaten und umgekehrt

Geokodierung ist die Übersetzung von geografischen Koordinaten in Adressen oder umgekehrt. Eine solche Übersetzung beinhaltet normalerweise das Senden der Quelldaten an einen Server, der dann die Übersetzung durchführt und die Ergebnisse zurückgibt, obwohl einige Anbieter von standortbezogenen Diensten plugins in der Lage sein können, einige Geokodierungsfunktionen anzubieten, ohne Daten an einen entfernten Server zu senden. Die Verfügbarkeit und Genauigkeit der Übersetzung hängt in der Regel von dem zu übersetzenden Ort oder der Adresse ab, da verschiedene Gebiete der Erde mit unterschiedlicher Genauigkeit kartiert sind.

Eine Geokodierungsabfrage in QML wird mit dem Typ GeocodeModel durchgeführt. Für eine Adresse-zu-Koordinaten-Abfrage kann die Eigenschaft query entweder auf ein Address Objekt oder eine Zeichenkette gesetzt werden, die die Textform der zu suchenden Adresse enthält. Für die umgekehrte Suche kann dieselbe Eigenschaft stattdessen auf coordinate gesetzt werden. Die Ergebnisse werden im Inhalt des Modells zur Verfügung gestellt.

Schlüsseltypen

PluginEin Plugin für standortbezogene Dienste stellt Daten einschließlich Geokodierungsübersetzungsergebnissen bereit, die den Clients über eine GeocodeModel zugänglich gemacht werden.
GeocodeModelFragt das Plugin nach Geokodierungsübersetzungen ab und bietet Zugriff auf die Ergebnisse über Indizes im Modell.
AddressStrukturierte Adresse zur Verwendung in Abfragen und Ergebnissen der Geokodierung.

Beachten Sie, dass der Client ein Plugin Objekt erstellen muss, bevor er ein GeocodeModel Objekt verwenden kann. Dies ermöglicht den Zugriff auf die Geokodierungsübersetzungsdienste und damit die Anzeige der Daten.

Routing und Navigation

Routing ist die Bestimmung eines navigierbaren Pfades von einem Punkt zu einem anderen auf einer Karte. Ausgehend von einer Karte, die Merkmale kennt, die die Navigation erleichtern oder erschweren, wie z. B. Brücken, Wasserstraßen usw., kann eine Reihe von Segmenten konstruiert werden, aus denen die Reise besteht. Wenn diese routeSegmenteinfach sind, können wir an den Verbindungspunkten, routeManeuver, zwischen den Segmenten Navigationsinformationen hinzufügen.

Schlüsseltypen

routeDer gesamte zu befahrende Weg.
routeSegmentDie einzelnen Komponenten einer Route.
routeManeuverDie Navigationsinformationen, die die Segmente miteinander verbinden.
RouteModelDie Art und Weise, wie Anfragen an das Backend gestellt werden, um Routeninformationen zu liefern.

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.