Aplicación de mapas de escritura Qt/C/descarga de mapas sin conexión/planificación de rutas/reproducción de pistas/puntos masivos/conversión de coordenadas
Este componente del mapa se ha escrito durante muchos años. El diseño inicial era relativamente tosco, solo para satisfacer las necesidades del proyecto y no consideró demasiada escalabilidad. a Baidu Map Después de mucho desarrollo en los últimos años, las aplicaciones prácticas en el sitio, así como una gran cantidad de sugerencias de mejora presentadas por los usuarios, llevaron gradualmente a la idea de reescribir completamente el código relacionado con el mapa. , como el diseño de subclases de clases base y varias interfaces funcionales que interactúan a través de funciones js en lugar de escribir un montón de código en la página web.
Los ejemplos de mapas anteriores eran relativamente toscos. Escribí todo lo que pensé. Las funciones se acumularon en serio, lo que las hizo más infladas. La demostración de funciones en la interfaz también fue relativamente poco intuitiva. Es hora de reconstruirlos todo este tiempo, incluidos todos los ejemplos que se han refactorizado. Para demasiadas demostraciones de ejemplo, se crea un directorio separado para almacenar el código de cada pequeño ejemplo y el código se divide, lo que hace que sea muy conveniente aprender las funciones. En este grupo, antes había un montón de códigos de ejemplo. Si están apilados en una clase, llevará tiempo encontrarlos. Lo más molesto para los programadores es que hay demasiados códigos en un archivo de código. Se pueden dividir en grupos si pueden.
2. Características funcionales
Admite múltiples núcleos de mapas y utiliza Baidu Map de forma predeterminada.
Admite los modos de mapa en línea y fuera de línea al mismo tiempo. Los mapas fuera de línea son convenientes para usar en escenarios que no están conectados a Internet.
Admite la activación de varios controles de mapas, como navegación de mapas, tipos de mapas, miniaturas, escalas, navegación panorámica, condiciones de tráfico en tiempo real, herramientas de dibujo, paneles de resultados, etc.
Admite la activación y desactivación dinámica de múltiples funciones de mapas, como arrastrar mapas, operar con el teclado, hacer zoom con la rueda, hacer doble clic para ampliar y establecer rangos en el mapa.
Proporciona numerosas interfaces de funciones js para la interacción, con parámetros extremadamente ricos, que cubren todos los requisitos imaginables de escenarios de aplicaciones.
Una señal unificada y un mecanismo de ranura, los resultados en el mapa se envían como una señal unificada y se distinguen según el tipo después de la recepción.
Admite la interacción con el mapa, como presionar el mouse para obtener la latitud y longitud de la ubicación correspondiente. Haga clic en un punto de etiqueta para que aparezca información sobre el punto correspondiente.
Admite agregar anotaciones, eliminar anotaciones, mover anotaciones y borrar anotaciones.
Los puntos de marcado pueden especificar imágenes de iconos, establecer ángulos de rotación y tener información de texto enriquecido.
Los eventos de puntos de etiqueta admiten notificaciones de señales con un solo clic y cuadros emergentes para mostrar información.
Proporciona interfaces de dirección a coordinación y de coordinación a dirección.
Admite varios dibujos gráficos, incluidos gráficos de líneas, polígonos, rectángulos, círculos, arcos, etc.
Se puede mostrar una barra de herramientas de dibujo flotante para dibujar líneas, marcar puntos, rectángulos, círculos, etc. directamente en el mapa.
Admite varias búsquedas de áreas, como áreas rectangulares y áreas circulares, y puede mostrar resultados de búsqueda en el mapa según la coincidencia de palabras clave.
Los datos de los puntos fronterizos del distrito administrativo sin conexión se pueden agregar dinámicamente. Puede buscar divisiones administrativas y obtener datos de puntos límite para esa área. Los datos se pueden guardar en un archivo para usarlos sin conexión.
Admite la función de agregación de puntos, varios puntos de etiquetas pequeños se fusionan en un punto de etiqueta grande para evitar interacciones hostiles causadas por puntos densos.
Se puede agregar una gran cantidad de puntos y se puede hacer clic en cada punto para obtener las coordenadas y la información correspondientes.
Toda la información de cobertura, como puntos marcados, rectángulos, polígonos, gráficos de líneas, etc., se puede obtener activamente.
Admite la planificación de rutas, incluidas rutas de autobús, rutas sin conductor, rutas para caminar y rutas en bicicleta. Diferentes consultas admiten diferentes estrategias, incluido el tiempo mínimo, los traslados mínimos y las rutas sin elevación.
Los resultados de la planificación de la ruta se muestran en el mapa y también se puede obtener el conjunto de coordenadas del punto de la ruta. Estos datos se pueden guardar en un archivo para poder enviarlos a un robot o dron para su navegación y movimiento de trayectoria.
Se pueden configurar diferentes vistas de mapas, como mapa de calles, mapa satelital y mapa híbrido.
Se pueden configurar diferentes estilos, como azul medianoche, verde hierba y otros estilos.
Proporciona un módulo de descarga de mapas sin conexión. Puede elegir diferentes núcleos de mapas, como Baidu Maps o Google Maps, diferentes tipos de mapas, como descargar mapas de calles o mapas satelitales, diferentes niveles de mapas y descargas multiproceso extremadamente rápidas.
La fila de la tabla muestra el progreso de descarga del mosaico correspondiente en tiempo real, incluido el tiempo de espera de descarga y el número de reintentos. Se envía una notificación de señal cada vez que se completa la descarga del mosaico y los parámetros incluyen el tiempo de descarga.
Proporciona un módulo de descarga de mapas de contorno de provincias y ciudades para descargar automáticamente mapas de contorno de cada región y guardarlos en archivos de script o archivos de texto.
Admite el ajuste manual de los límites del contorno de diferentes áreas. Después del ajuste, se puede obtener activamente el conjunto de puntos límite ajustados.
Proporciona ejemplos de puntos dinámicos, selecciona puntos manualmente en el mapa y agrega etiquetas, con información personalizada como velocidad y tiempo.
Proporciona ejemplos de puntos masivos, agrega puntos de etiquetas, agregación de puntos y puntos masivos en lotes. Se utiliza para probar el rendimiento máximo de puntos admitido en el entorno.
Admite la conversión de coordenadas GPS y proporciona métodos tanto en línea como fuera de línea. Generalmente, el dispositivo recibe coordenadas GPS estándar, que deben convertirse a coordenadas de Baidu en Baidu Maps.
Se proporciona un ejemplo de una trayectoria dinámica. Después de presionar el mouse en el mapa para seleccionar el punto de inicio y el punto final, se consulta la ruta, se obtienen los puntos de la trayectoria de la ruta y el temporizador simula el movimiento de la trayectoria. Los datos se pueden filtrar para filtrar puntos de ruta excesivos hasta un número determinado de puntos.
Proporciona un ejemplo de reproducción de pistas, que se puede reproducir de acuerdo con la lista de puntos de pista especificada y también se pueden importar datos de puntos de pista para su reproducción. También admite la reproducción de pistas en mapas de calles, mapas satelitales y mapas mixtos.
Proporciona ejemplos de mapas regionales provinciales y municipales, utilizando el componente echart, y también admite mapas de puntos intermitentes, mapas de migración, mapas regionales, mapas mundiales, paneles de control, etc. Puede configurar varios colores, como título, información solicitada, color de fondo, color de texto, color de línea, color de área, etc.
Ejemplos de mapas regionales provinciales y de ciudades, mapas mundiales integrados, mapas nacionales, mapas provinciales, mapas regionales, precisos para el condado, todos los mapas se pueden utilizar sin conexión. Puede configurar el nombre, valor, longitud y latitud de la ciudad.
Componentes de navegador universales integrados y compatible con webkit/webengine/miniblink y otros núcleos. Proporciona ejemplos de control de páginas web para demostrar la apertura de páginas web y archivos de páginas web locales.
Admite cualquier versión de Qt, cualquier sistema y cualquier compilador.
3. Uso del código
Copie los dos directorios de componentes core_map (componente de mapa)/core_webview (componente de navegador) al directorio de su proyecto, complete el código de importación en pro y agréguelo a su proyecto. $PWD/…/ representa el directorio de nivel superior.
Para habilitar el kernel de mapas en pro, por ejemplo, el kernel de mapas de Baidu requiere agregar una línea que defina DEFINES = baidux en el archivo pro.
Importar archivos de encabezado.
#include"webview.h"#include"mapbase.h"
Cree un nuevo formulario y póngale un diseño. Se recomienda utilizar gridlayout, que puede colocar múltiples controles del navegador.
Cree una instancia de la clase de navegador y la clase de mapa.