Technologieaustausch

Qt/C-Schreibkartenanwendung/Offline-Karten-Download/Pfadplanung/Track-Wiedergabe/Massenpunkte/Koordinatenkonvertierung

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Vorwort

Diese Kartenkomponente wurde seit vielen Jahren geschrieben. Zu Beginn war sie nur auf die Anforderungen des Projekts ausgerichtet und berücksichtigte beispielsweise nicht zu viel Skalierbarkeit Nach vielen Entwicklungen in den letzten Jahren, praktischen Anwendungen vor Ort sowie einer Vielzahl von Verbesserungsvorschlägen von Benutzern entstand nach und nach die Idee, die entsprechenden kartenbezogenen Codes komplett neu zu schreiben B. das Design von Basisklassen-Unterklassen und verschiedenen funktionalen Schnittstellen, die über js-Funktionen interagieren, anstatt eine Menge Code in die Mitte der Webseite zu schreiben.

Die vorherigen Kartenbeispiele waren relativ grob geschrieben. Die Funktionen wurden immer wieder hinzugefügt, was sie auch relativ unintuitiv machte Zeit, sie alle zu rekonstruieren, einschließlich aller Beispiele, die umgestaltet wurden. Für jedes kleine Beispiel wurde ein separates Verzeichnis erstellt, und der Code wurde aufgeteilt, was das Erlernen der Funktionen sehr erleichtert Zuvor gab es eine Menge Beispielcodes, die in einer Klasse gestapelt waren. Das Ärgerlichste für Programmierer ist, dass sie zu viele Codes enthalten können nach Möglichkeit in Gruppen eingeteilt werden.

2. Funktionsmerkmale

  1. Unterstützt mehrere Kartenkerne und verwendet standardmäßig Baidu Map.
  2. Es unterstützt gleichzeitig den Online-Karten- und den Offline-Kartenmodus. Offline-Karten sind praktisch für die Verwendung in Szenarien, die nicht mit dem Internet verbunden sind.
  3. Unterstützt die Aktivierung verschiedener Kartensteuerelemente wie Kartennavigation, Kartentypen, Miniaturansichten, Maßstäbe, Panoramanavigation, Echtzeit-Verkehrsbedingungen, Zeichenwerkzeuge, Ergebnisfelder usw.
  4. Unterstützt das dynamische Aktivieren und Deaktivieren mehrerer Kartenfunktionen, wie z. B. Kartenziehen, Tastaturbedienung, Radzoom, Doppelklick zum Vergrößern und Kartenbereich.
  5. Bietet zahlreiche js-Funktionsschnittstellen für die Interaktion mit äußerst umfangreichen Parametern, die alle denkbaren Anforderungen von Anwendungsszenarien abdecken.
  6. Als einheitlicher Signal- und Slot-Mechanismus werden die Ergebnisse in der Karte als einheitliches Signal gesendet und nach dem Empfang nach Typ unterschieden.
  7. Unterstützt die Karteninteraktion, z. B. das Drücken der Maus, um den Breiten- und Längengrad des entsprechenden Standorts zu ermitteln. Klicken Sie auf einen Beschriftungspunkt, um Informationen zum entsprechenden Punkt anzuzeigen.
  8. Unterstützt das Hinzufügen von Anmerkungen, das Löschen von Anmerkungen, das Verschieben von Anmerkungen und das Löschen von Anmerkungen.
  9. Markierungspunkte können Symbolbilder angeben, Drehwinkel festlegen und Rich-Text-Eingabeaufforderungsinformationen enthalten.
  10. Beschriftungspunktereignisse unterstützen Signalbenachrichtigungen mit einem Klick und Popup-Felder zur Anzeige von Informationen.
  11. Bietet Adresse-zu-Koordinaten- und Koordinaten-zu-Adresse-Schnittstellen.
  12. Unterstützt verschiedene Grafikzeichnungen, einschließlich Liniendiagramme, Polygone, Rechtecke, Kreise, Bögen usw.
  13. Eine schwebende Zeichensymbolleiste kann angezeigt werden, um direkt Linien, Punkte, Rechtecke, Kreise usw. auf der Karte zu zeichnen.
  14. Unterstützt verschiedene Bereichssuchen, z. B. rechteckige und kreisförmige Bereiche, und kann Suchergebnisse auf der Karte basierend auf Schlüsselwortübereinstimmungen anzeigen.
  15. Offline-Daten zu Verwaltungsbezirksgrenzen können dynamisch hinzugefügt werden. Sie können nach Verwaltungsbezirken suchen und Grenzpunktdaten für dieses Gebiet abrufen. Daten können zur Offline-Verwendung in einer Datei gespeichert werden.
  16. Unterstützt die Punktaggregationsfunktion. Mehrere kleine Beschriftungspunkte werden zu einem großen Beschriftungspunkt zusammengeführt, um unfreundliche Interaktionen durch dichte Punkte zu verhindern.
  17. Sie können eine große Anzahl von Punkten hinzufügen und auf jeden Punkt klicken, um die entsprechenden Koordinaten und Informationen zu erhalten.
  18. Alle Abdeckungsinformationen wie markierte Punkte, Rechtecke, Polygone, Liniendiagramme usw. können aktiv abgerufen werden.
  19. Unterstützt die Wegeplanung, einschließlich Busrouten, selbstfahrende Routen, Wanderrouten und Fahrradrouten. Verschiedene Abfragen unterstützen unterschiedliche Strategien, einschließlich minimaler Zeit, minimaler Transfers und Routen ohne erhöhte Höhenunterschiede.
  20. Die Ergebnisse der Pfadplanung werden auf der Karte angezeigt und der Pfadpunktkoordinatensatz kann ebenfalls abgerufen werden. Diese Daten können in einer Datei gespeichert werden, sodass sie zur Navigation und Flugbahnbewegung an einen Roboter oder eine Drohne gesendet werden können.
  21. Es können verschiedene Kartenansichten eingerichtet werden, z. B. Straßenkarte, Satellitenkarte und Hybridkarte.
  22. Es können verschiedene Stile eingestellt werden, beispielsweise Mitternachtsblau, Grasgrün und andere Stile.
  23. Bietet ein Offline-Karten-Download-Modul. Sie können zwischen verschiedenen Kartenkernen wie Baidu Maps oder Google Maps, verschiedenen Kartentypen wie dem Herunterladen von Straßenkarten oder Satellitenkarten, verschiedenen Kartenebenen und extrem schnellen Multithread-Downloads wählen.
  24. In der Tabellenzeile wird der entsprechende Kachel-Download-Fortschritt in Echtzeit angezeigt, einschließlich des Download-Timeouts und der Anzahl der Wiederholungsversuche. Bei jedem Abschluss des Kachel-Downloads wird eine Signalbenachrichtigung gesendet, und die Parameter umfassen die Download-Zeit.
  25. Bietet ein Modul zum Herunterladen von Übersichtskarten für Provinzen und Städte, um automatisch Übersichtskarten jeder Region herunterzuladen und sie in Skriptdateien oder Textdateien zu speichern.
  26. Unterstützt die manuelle Anpassung der Konturgrenzen verschiedener Bereiche. Nach der Anpassung kann der angepasste Grenzpunktsatz aktiv abgerufen werden.
  27. Bietet dynamische Punktbeispiele, wählt manuell Punkte auf der Karte aus und fügt Beschriftungen hinzu, mit benutzerdefinierten Informationen wie Geschwindigkeit und Zeit.
  28. Bietet Massive-Point-Beispiele, fügt Beschriftungspunkte, Punktaggregation und Massive-Points in Stapeln hinzu. Wird verwendet, um die maximale Punktleistung zu testen, die in der Umgebung unterstützt wird.
  29. Unterstützt die Konvertierung von GPS-Koordinaten und bietet sowohl Online- als auch Offline-Methoden. Im Allgemeinen empfängt das Gerät Standard-GPS-Koordinaten, die auf Baidu Maps in Baidu-Koordinaten umgewandelt werden müssen.
  30. Es wird ein Beispiel für eine dynamische Trajektorie bereitgestellt. Nachdem Sie mit der Maus auf die Karte gedrückt haben, um den Start- und Endpunkt auszuwählen, wird die Route abgefragt, die Trajektorienpunkte des Pfads werden ermittelt und der Timer simuliert die Trajektorienbewegung. Daten können gefiltert werden, um überschüssige Wegpunkte auf eine festgelegte Anzahl von Punkten zu reduzieren.
  31. Bietet ein Beispiel für die Titelwiedergabe, das gemäß der angegebenen Titelpunktliste wiedergegeben werden kann. Außerdem können Titelpunktdaten zur Wiedergabe importiert werden. Es unterstützt auch die Titelwiedergabe in Straßenkarten, Satellitenkarten und gemischten Karten.
  32. Bietet Beispiele für regionale und kommunale Karten unter Verwendung der Echart-Komponente und unterstützt auch Blitzpunktkarten, Migrationskarten, Regionalkarten, Weltkarten, Dashboards usw. Sie können verschiedene Farben wie Titel, Eingabeaufforderungsinformationen, Hintergrundfarbe, Textfarbe, Linienfarbe, Bereichsfarbe usw. festlegen.
  33. Beispiele für Provinz- und Stadtregionalkarten, integrierte Weltkarte, Landeskarte, Provinzkarte, Regionalkarte, kreisgenau, alle Karten können offline verwendet werden. Sie können den Namen, den Wert sowie die Längen- und Breitengrade der Stadt festlegen.
  34. Integrierte universelle Browserkomponenten und unterstützt Webkit/Webengine/Miniblink und andere Kernel. Bietet Beispiele für die Steuerung von Webseiten, um das Öffnen von Webseiten und lokalen Webseitendateien zu veranschaulichen.
  35. Unterstützt jede Qt-Version, jedes System und jeden Compiler.

3. Code-Nutzung

  1. Kopieren Sie die beiden Komponentenverzeichnisse core_map (Kartenkomponente)/core_webview (Browserkomponente) in Ihr Projektverzeichnis, geben Sie den Importcode in Pro ein und fügen Sie ihn Ihrem Projekt hinzu. $PWD/…/ stellt das Verzeichnis der oberen Ebene dar.
include ($$PWD/../core_map/core_map.pri)
include ($$PWD/../core_webview/core_webview.pri)
  1. Um beispielsweise den Map-Kernel in Pro zu aktivieren, muss für den Baidu-Map-Kernel eine Zeile hinzugefügt werden, die DEFINES = baidux in der Pro-Datei definiert.
  2. Header-Dateien importieren.
#include "webview.h"
#include "mapbase.h"
  1. Erstellen Sie ein neues Formular und fügen Sie ein Layout hinzu. Es wird empfohlen, Gridlayout zu verwenden, mit dem mehrere Browsersteuerelemente platziert werden können.
  2. Instanziieren Sie die Browserklasse und die Kartenklasse.
//实例化浏览器控件
WebView *webView = new WebView(this);
//加入到布局
webView-