Condivisione della tecnologia

Applicazione di scrittura Qt/C per mappe/download di mappe offline/pianificazione del percorso/riproduzione di tracce/punti massicci/conversione di coordinate

2024-07-08

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

1. Prefazione

Questo componente della mappa è stato scritto per molti anni. Il design iniziale era relativamente approssimativo All'inizio, era solo per soddisfare le esigenze del progetto e non considerava troppa scalabilità. Ad esempio, è stato originariamente scritto nel codice a Baidu Map Dopo molti sviluppi negli ultimi anni, applicazioni pratiche sul posto, nonché un gran numero di suggerimenti di miglioramento avanzati dagli utenti, hanno gradualmente portato all'idea di riscrivere completamente i corrispondenti codici relativi alle mappe. , come la progettazione delle sottoclassi della classe base e varie interfacce funzionali che interagiscono tramite funzioni js invece di scrivere un mucchio di codice nel mezzo della pagina web.

Gli esempi di mappe precedenti erano relativamente approssimativi nella scrittura. Ho scritto tutto ciò a cui pensavo. Le funzioni erano ammucchiate sul serio, ho continuato ad aggiungerle, il che le ha rese più gonfie. Anche la dimostrazione delle funzioni sull'interfaccia era relativamente poco intuitiva tempo di ricostruirli per tutto questo tempo, compresi tutti gli esempi che sono stati rifattorizzati. Per troppe dimostrazioni di esempio, viene creata una directory separata per memorizzare il codice di ogni piccolo esempio e il codice viene suddiviso, rendendo molto comodo l'apprendimento delle funzioni. di questo gruppo Prima c'erano un sacco di codici di esempio. Se sono ammucchiati in una classe, ci vorrà del tempo per trovarli possono essere divisi in gruppi se possibile.

2. Caratteristiche funzionali

  1. Supporta più core di mappe, utilizzando Baidu Map per impostazione predefinita.
  2. Supporta contemporaneamente sia la modalità mappa online che quella offline. Le mappe offline sono comode da utilizzare in scenari non connessi a Internet.
  3. Supporta l'attivazione di vari controlli della mappa, come navigazione della mappa, tipi di mappa, miniature, scale, navigazione panoramica, condizioni del traffico in tempo reale, strumenti di disegno, pannelli dei risultati, ecc.
  4. Supporta l'abilitazione e la disabilitazione dinamica di più funzioni della mappa, come il trascinamento della mappa, l'utilizzo della tastiera, lo zoom della ruota, il doppio clic per ingrandire e l'intervallo della mappa.
  5. Fornisce numerose interfacce di funzioni js per l'interazione, con parametri estremamente ricchi, che coprono tutti i requisiti immaginabili dello scenario applicativo.
  6. Grazie a un meccanismo di segnale e slot unificato, i risultati nella mappa vengono inviati come segnale unificato e vengono distinti in base alla tipologia dopo la ricezione.
  7. Supporta l'interazione con la mappa, ad esempio premendo il mouse per ottenere la latitudine e la longitudine della posizione corrispondente. Fare clic su un punto dell'etichetta per visualizzare le informazioni sul punto corrispondente.
  8. Supporta l'aggiunta di annotazioni, l'eliminazione di annotazioni, lo spostamento di annotazioni e la cancellazione di annotazioni.
  9. I punti di contrassegno possono specificare immagini di icone, impostare angoli di rotazione e avere informazioni di prompt in formato rich text.
  10. Gli eventi dei punti etichetta supportano la notifica del segnale con un solo clic e le caselle popup per visualizzare le informazioni.
  11. Fornisce interfacce indirizzo-coordinata e coordinata-indirizzo.
  12. Supporta vari disegni grafici, inclusi grafici a linee, poligoni, rettangoli, cerchi, archi, ecc.
  13. È possibile visualizzare una barra degli strumenti di disegno mobile per tracciare direttamente linee, contrassegnare punti, rettangoli, cerchi, ecc. sulla mappa.
  14. Supporta varie ricerche di aree, come aree rettangolari e aree circolari, e può visualizzare i risultati della ricerca sulla mappa in base alla corrispondenza delle parole chiave.
  15. I dati dei punti di confine del distretto amministrativo offline possono essere aggiunti dinamicamente. È possibile cercare divisioni amministrative e ottenere dati sui punti di confine per quell'area. I dati possono essere salvati in un file per l'utilizzo offline.
  16. Supporta la funzione di aggregazione dei punti, più punti di etichetta piccoli vengono uniti in un unico punto di etichetta di grandi dimensioni per impedire interazioni ostili causate da punti densi.
  17. È possibile aggiungere un gran numero di punti e su ciascun punto è possibile fare clic per ottenere le coordinate e le informazioni corrispondenti.
  18. Tutte le informazioni di copertura, come punti contrassegnati, rettangoli, poligoni, grafici a linee, ecc., possono essere ottenute attivamente.
  19. Supporta la pianificazione dei percorsi, inclusi percorsi di autobus, percorsi con guida autonoma, percorsi pedonali e percorsi ciclabili. Diverse query supportano strategie diverse, tra cui tempo minimo, trasferimenti minimi e nessun percorso sopraelevato.
  20. I risultati della pianificazione del percorso vengono visualizzati sulla mappa ed è anche possibile ottenere il set di coordinate del punto del percorso. Questi dati possono essere salvati in un file in modo che possano essere inviati a un robot o drone per la navigazione e il movimento della traiettoria.
  21. È possibile impostare diverse visualizzazioni della mappa, ad esempio mappa stradale, mappa satellitare e mappa ibrida.
  22. È possibile impostare stili diversi, come blu notte, verde erba e altri stili.
  23. Fornisce un modulo di download di mappe offline. Puoi scegliere diversi core di mappe come Baidu Maps o Google Maps, diversi tipi di mappe come il download di mappe stradali o mappe satellitari, diversi livelli di mappa e download multi-thread estremamente veloci.
  24. La riga della tabella visualizza l'avanzamento del download del riquadro corrispondente in tempo reale, incluso il timeout del download e il numero di tentativi. Viene inviata una notifica di segnale per ogni completamento del download del riquadro e i parametri includono il tempo di download.
  25. Fornisce un modulo di download delle mappe di contorno di province e città per scaricare automaticamente le mappe di contorno di ciascuna regione e salvarle in file di script o file di testo.
  26. Supporta la regolazione manuale dei confini del contorno di diverse aree Dopo la regolazione, è possibile ottenere attivamente il set di punti di confine regolati.
  27. Fornisce esempi di punti dinamici, seleziona manualmente i punti sulla mappa e aggiungi etichette, con informazioni personalizzate come velocità e tempo.
  28. Fornisce esempi di punti massivi, aggiunge punti etichetta, aggregazione di punti e punti massivi in ​​batch. Utilizzato per testare le prestazioni in punti massimi supportati nell'ambiente.
  29. Supporta la conversione delle coordinate GPS e fornisce metodi online e offline. Generalmente, il dispositivo riceve coordinate GPS standard, che devono essere convertite in coordinate Baidu su Baidu Maps.
  30. Viene fornito un esempio di traiettoria dinamica. Dopo aver premuto il mouse sulla mappa per selezionare il punto iniziale e il punto finale, viene interrogato il percorso, vengono ottenuti i punti della traiettoria del percorso e il timer simula il movimento della traiettoria. I dati possono essere filtrati per filtrare i waypoint eccessivi fino a un determinato numero di punti.
  31. Fornisce un esempio di riproduzione della traccia, che può essere riprodotta in base all'elenco dei punti della traccia specificato. I dati dei punti della traccia possono anche essere importati per la riproduzione. Supporta anche la riproduzione delle tracce nelle mappe stradali, nelle mappe satellitari e nelle mappe miste.
  32. Fornisce esempi di mappe regionali provinciali e comunali, utilizzando il componente echart, e supporta anche mappe di punti lampeggianti, mappe di migrazione, mappe regionali, mappe del mondo, dashboard, ecc. È possibile impostare vari colori come titolo, informazioni sui prompt, colore di sfondo, colore del testo, colore della linea, colore dell'area, ecc.
  33. Esempi di mappe regionali provinciali e cittadine, mappa del mondo integrata, mappa nazionale, mappa della provincia, mappa regionale, precisa per contea, tutte le mappe possono essere utilizzate offline. È possibile impostare il nome, il valore, la longitudine e la latitudine della città.
  34. Componenti del browser universali integrati e supporta webkit/webengine/miniblink e altri kernel. Fornisce esempi di controllo delle pagine Web per dimostrare l'apertura di pagine Web e file di pagine Web locali.
  35. Supporta qualsiasi versione di Qt, qualsiasi sistema e qualsiasi compilatore.

3. Utilizzo del codice

  1. Copia le directory dei due componenti core_map (componente mappa)/core_webview (componente browser) nella directory del tuo progetto, compila il codice di importazione in pro e aggiungilo al tuo progetto. $PWD/…/ rappresenta la directory di livello superiore.
include ($$PWD/../core_map/core_map.pri)
include ($$PWD/../core_webview/core_webview.pri)
  1. Per abilitare il kernel della mappa in pro, ad esempio, il kernel della mappa Baidu richiede l'aggiunta di una riga che definisce DEFINES = baidux nel file pro.
  2. Importa file di intestazione.
#include "webview.h"
#include "mapbase.h"
  1. Crea un nuovo modulo e inserisci un layout su di esso. Si consiglia di utilizzare il layout a griglia, che può inserire più controlli del browser.
  2. Istanziare la classe del browser e la classe della mappa.
//实例化浏览器控件
WebView *webView = new WebView(this);
//加入到布局
webView-