Application d'écriture de carte Qt/C/téléchargement de carte hors ligne/planification de chemin/lecture de piste/points massifs/conversion de coordonnées
Ce composant cartographique a été écrit pendant de nombreuses années. La conception initiale était relativement approximative, c'était juste pour répondre aux besoins du projet et ne prenait pas trop en compte l'évolutivité. Par exemple, il était initialement écrit dans le code en conséquence. à Baidu Map. Après de nombreux développements ces dernières années, des applications pratiques sur place, ainsi qu'un grand nombre de suggestions d'amélioration avancées par les utilisateurs, ont progressivement conduit à l'idée de réécrire complètement les codes liés à la carte correspondants. , comme la conception de sous-classes de classe de base et diverses interfaces fonctionnelles interagissant via les fonctions js au lieu d'écrire un tas de code au milieu de la page Web.
Les exemples de cartes précédents étaient relativement grossiers dans l'écriture. J'ai écrit tout ce à quoi je pensais. Je n'ai cessé de les ajouter, ce qui les a rendus plus volumineux. La démonstration des fonctions sur l'interface était également relativement peu intuitive, j'ai donc pris le. Il est temps de les reconstruire pendant tout ce temps, y compris tous les exemples ont été refactorisés. Pour trop d'exemples de démonstration, un répertoire séparé est créé pour stocker le code de chaque petit exemple, et le code est divisé, ce qui rend l'apprentissage des fonctions très pratique. de ce groupe. Avant, il y avait un tas d'exemples de codes. S'ils sont entassés dans une classe, il faudra du temps pour les trouver. Le plus ennuyeux pour les programmeurs est qu'il y a trop de codes dans un fichier de code. peuvent être divisés en groupes s’ils le peuvent.
2. Caractéristiques fonctionnelles
Prend en charge plusieurs cœurs de carte, en utilisant Baidu Map par défaut.
Il prend en charge à la fois les modes de carte en ligne et de carte hors ligne. Les cartes hors ligne sont pratiques à utiliser dans des scénarios qui ne sont pas connectés à Internet.
Prend en charge l'activation de divers contrôles cartographiques, tels que la navigation cartographique, les types de cartes, les vignettes, les échelles, la navigation panoramique, les conditions de circulation en temps réel, les outils de dessin, les panneaux de résultats, etc.
Prend en charge l'activation et la désactivation dynamiques de plusieurs fonctions cartographiques, telles que le déplacement de la carte, le fonctionnement du clavier, le zoom sur la molette, le double-clic pour agrandir et la télémétrie de la carte.
Fournit de nombreuses interfaces de fonctions js pour l'interaction, avec des paramètres extrêmement riches, couvrant toutes les exigences de scénarios d'application imaginables.
Mécanisme de signal et de créneau unifié, les résultats de la carte sont envoyés sous forme de signal unifié et sont distingués selon le type après réception.
Prend en charge l'interaction cartographique, comme appuyer sur la souris pour obtenir la latitude et la longitude de l'emplacement correspondant. Cliquez sur un point d'étiquette pour afficher des informations sur le point correspondant.
Prend en charge l'ajout d'annotations, la suppression d'annotations, le déplacement d'annotations et la suppression d'annotations.
Les points de marquage peuvent spécifier des images d'icônes, définir des angles de rotation et contenir des informations d'invite en texte enrichi.
Les événements de point d'étiquette prennent en charge la notification de signal en un seul clic et les boîtes contextuelles pour afficher les informations.
Fournit des interfaces adresse-coordonnée et coordonnée-adresse.
Prend en charge divers dessins graphiques, notamment des graphiques linéaires, des polygones, des rectangles, des cercles, des arcs, etc.
Une barre d'outils de dessin flottante peut être affichée pour tracer directement des lignes, marquer des points, des rectangles, des cercles, etc. sur la carte.
Prend en charge diverses recherches de zones, telles que les zones rectangulaires et les zones circulaires, et peut afficher les résultats de la recherche sur la carte en fonction de la correspondance de mots clés.
Les données des points limites des districts administratifs hors ligne peuvent être ajoutées dynamiquement. Vous pouvez rechercher des divisions administratives et obtenir des données de points limites pour cette zone. Les données peuvent être enregistrées dans un fichier pour une utilisation hors ligne.
Prend en charge la fonction d'agrégation de points, plusieurs petits points d'étiquette sont fusionnés en un seul grand point d'étiquette pour éviter les interactions hostiles causées par des points denses.
Un grand nombre de points peuvent être ajoutés, et chaque point peut être cliqué pour obtenir les coordonnées et informations correspondantes.
Toutes les informations de couverture, telles que les points marqués, les rectangles, les polygones, les graphiques linéaires, etc., peuvent être obtenues activement.
Prend en charge la planification des itinéraires, y compris les itinéraires de bus, les itinéraires autonomes, les itinéraires pédestres et les itinéraires cyclables. Différentes requêtes prennent en charge différentes stratégies, notamment le temps minimum, les transferts minimum et l'absence d'itinéraires surélevés.
Les résultats de la planification du chemin sont affichés sur la carte et l'ensemble des coordonnées des points du chemin peut également être obtenu. Ces données peuvent être enregistrées dans un fichier afin de pouvoir être envoyées à un robot ou un drone pour la navigation et le mouvement de trajectoire.
Différentes vues cartographiques peuvent être configurées, telles qu'un plan des rues, une carte satellite et une carte hybride.
Différents styles peuvent être définis, tels que le bleu nuit, le vert herbe et d'autres styles.
Fournit un module de téléchargement de cartes hors ligne. Vous pouvez choisir différents noyaux de cartes tels que Baidu Maps ou Google Maps, différents types de cartes tels que le téléchargement de cartes routières ou de cartes satellites, différents niveaux de carte et des téléchargements multithread extrêmement rapides.
La ligne du tableau affiche la progression du téléchargement de tuile correspondante en temps réel, y compris le délai d'expiration du téléchargement et le nombre de tentatives. Une notification de signal est envoyée pour chaque achèvement de téléchargement de tuile, et les paramètres incluent le temps de téléchargement.
Fournit un module de téléchargement de cartes muettes de province et de ville pour télécharger automatiquement des cartes muettes de chaque région et les enregistrer dans des fichiers de script ou des fichiers texte.
Prend en charge l'ajustement manuel des limites de contour de différentes zones. Après ajustement, l'ensemble de points limites ajustés peut être obtenu activement.
Fournit des exemples de points dynamiques, sélectionnez manuellement des points sur la carte et ajoutez des étiquettes, avec des informations personnalisées telles que la vitesse et l'heure.
Fournit des exemples de points massifs, ajoute des points d'étiquette, une agrégation de points et des points massifs par lots. Utilisé pour tester les performances de points maximales prises en charge dans l'environnement.
Prend en charge la conversion des coordonnées GPS et fournit des méthodes en ligne et hors ligne. Généralement, l'appareil reçoit des coordonnées GPS standard, qui doivent être converties en coordonnées Baidu sur Baidu Maps.
Un exemple de trajectoire dynamique est fourni. Après avoir appuyé sur la souris sur la carte pour sélectionner le point de départ et le point final, l'itinéraire est interrogé, les points de trajectoire du chemin sont obtenus et le chronomètre simule le mouvement de la trajectoire. Les données peuvent être filtrées pour filtrer les waypoints excessifs jusqu'à un nombre défini de points.
Fournit un exemple de lecture de piste, qui peut être lu selon la liste de points de piste spécifiée. Les données de points de piste peuvent également être importées pour la lecture. Il prend également en charge la lecture des pistes dans les plans de rues, les cartes satellites et les cartes mixtes.
Fournit des exemples de cartes régionales provinciales et municipales, utilisant le composant echart, et prend également en charge les cartes de points clignotants, les cartes de migration, les cartes régionales, les cartes du monde, les tableaux de bord, etc. Vous pouvez définir différentes couleurs telles que le titre, les informations d'invite, la couleur d'arrière-plan, la couleur du texte, la couleur de la ligne, la couleur de la zone, etc.
Exemples de cartes régionales provinciales et urbaines, carte du monde intégrée, carte nationale, carte de province, carte régionale, précises pour le comté, toutes les cartes peuvent être utilisées hors ligne. Vous pouvez définir le nom, la valeur, la longitude et la latitude de la ville.
Composants de navigateur universels intégrés et prend en charge webkit/webengine/miniblink et d'autres noyaux. Fournit des exemples de contrôle de page Web pour démontrer l’ouverture de pages Web et de fichiers de pages Web locales.
Prend en charge n'importe quelle version de Qt, n'importe quel système et n'importe quel compilateur.
3. Utilisation des codes
Copiez les deux répertoires de composants core_map (composant carte)/core_webview (composant navigateur) dans le répertoire de votre projet, remplissez le code d'importation dans pro et ajoutez-le à votre projet. $PWD/…/ représente le répertoire de niveau supérieur.
Pour activer le noyau cartographique dans pro, par exemple, le noyau cartographique Baidu nécessite l'ajout d'une ligne définissant DEFINES = baidux dans le fichier pro.
Importez les fichiers d'en-tête.
#include"webview.h"#include"mapbase.h"
Créez un nouveau formulaire et placez-y une mise en page. Il est recommandé d'utiliser Gridlayout, qui peut placer plusieurs contrôles de navigateur.
Instanciez la classe de navigateur et la classe de carte.