Compartilhamento de tecnologia

Aplicativo de mapa de escrita Qt/C/download de mapa offline/planejamento de caminho/reprodução de trilha/pontos massivos/conversão de coordenadas

2024-07-08

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

1. Prefácio

Este componente do mapa foi escrito há muitos anos. O design inicial era relativamente grosseiro. No início, era apenas para atender às necessidades do projeto e não considerava muita escalabilidade. para o Mapa Baidu Depois de muito desenvolvimento nos últimos anos, as aplicações práticas no local, bem como um grande número de sugestões de melhorias apresentadas pelos usuários, levaram gradualmente à ideia de reescrever completamente os códigos relacionados ao mapa correspondentes. , como o design de subclasses de classe base e várias interfaces funcionais interagindo por meio de funções js em vez de escrever um monte de código no meio da página da web.

Os exemplos de mapas anteriores eram relativamente difíceis de escrever. Escrevi tudo o que pensei. As funções foram empilhadas a sério e continuei adicionando-as, o que as tornou mais inchadas. tempo para reconstruí-los todo esse tempo, incluindo todos os exemplos foram refatorados. Para muitas demonstrações de exemplos, um diretório separado é criado para armazenar o código de cada pequeno exemplo, e o código é dividido, tornando muito conveniente o aprendizado das funções. deste grupo. Antes, havia vários códigos de exemplo. Se eles estiverem empilhados em uma classe, levará algum tempo para encontrá-los. podem ser divididos em grupos, se puderem.

2. Recursos funcionais

  1. Suporta vários núcleos de mapa, usando o Baidu Map por padrão.
  2. Ele suporta os modos de mapa on-line e de mapa off-line ao mesmo tempo. Os mapas off-line são convenientes para uso em cenários que não estão conectados à Internet.
  3. Suporta a ativação de vários controles de mapas, como navegação de mapas, tipos de mapas, miniaturas, escalas, navegação panorâmica, condições de tráfego em tempo real, ferramentas de desenho, painéis de resultados, etc.
  4. Suporta ativação e desativação dinâmica de várias funções do mapa, como arrastar o mapa, operação do teclado, zoom da roda, clique duplo para ampliar e variação do mapa.
  5. Fornece inúmeras interfaces de funções js para interação, com parâmetros extremamente ricos, cobrindo todos os requisitos concebíveis do cenário de aplicação.
  6. Um mecanismo unificado de sinal e slot, os resultados no mapa são enviados como um sinal unificado e são diferenciados de acordo com o tipo após o recebimento.
  7. Suporta interação com mapas, como pressionar o mouse para obter a latitude e longitude do local correspondente. Clique em um ponto de rótulo para exibir informações sobre o ponto correspondente.
  8. Suporta adição de anotações, exclusão de anotações, movimentação de anotações e limpeza de anotações.
  9. Os pontos de marcação podem especificar imagens de ícones, definir ângulos de rotação e ter informações de prompt de rich text.
  10. Os eventos de ponto de rótulo suportam notificação de sinal de clique único e caixas pop-up para exibir informações.
  11. Fornece interfaces de endereço para coordenada e de coordenada para endereço.
  12. Suporta vários desenhos gráficos, incluindo gráficos de linhas, polígonos, retângulos, círculos, arcos, etc.
  13. Uma barra de ferramentas de desenho flutuante pode ser exibida para desenhar linhas, marcar pontos, retângulos, círculos, etc. diretamente no mapa.
  14. Suporta várias pesquisas de área, como áreas retangulares e circulares, e pode exibir resultados de pesquisa no mapa com base na correspondência de palavras-chave.
  15. Os dados off-line dos limites do distrito administrativo podem ser adicionados dinamicamente. Você pode pesquisar divisões administrativas e obter dados de pontos limite para essa área. Os dados podem ser salvos em um arquivo para uso offline.
  16. Suporta função de agregação de pontos, vários pequenos pontos de etiqueta são mesclados em um grande ponto de etiqueta para evitar interação hostil causada por pontos densos.
  17. Um grande número de pontos pode ser adicionado e cada ponto pode ser clicado para obter as coordenadas e informações correspondentes.
  18. Todas as informações de cobertura, como pontos marcados, retângulos, polígonos, gráficos de linhas, etc., podem ser obtidas ativamente.
  19. Oferece suporte ao planejamento de rotas, incluindo rotas de ônibus, rotas autônomas, rotas de caminhada e rotas de bicicleta. Diferentes consultas oferecem suporte a diferentes estratégias, incluindo tempo mínimo, transferências mínimas e sem rotas elevadas.
  20. Os resultados do planejamento do caminho são exibidos no mapa e o conjunto de coordenadas do ponto do caminho também pode ser obtido. Esses dados podem ser salvos em um arquivo para que possam ser enviados a um robô ou drone para navegação e movimentação de trajetória.
  21. Diferentes visualizações de mapa podem ser configuradas, como mapa de ruas, mapa de satélite e mapa híbrido.
  22. Diferentes estilos podem ser definidos, como azul meia-noite, verde grama e outros estilos.
  23. Fornece um módulo de download de mapas offline. Você pode escolher diferentes núcleos de mapas, como Baidu Maps ou Google Maps, diferentes tipos de mapas, como download de mapas de ruas ou mapas de satélite, diferentes níveis de mapas e downloads multithread extremamente rápidos.
  24. A linha da tabela exibe o progresso do download do bloco correspondente em tempo real, incluindo o tempo limite de download e o número de novas tentativas. Uma notificação de sinal é enviada para cada conclusão do download do bloco, e os parâmetros incluem o tempo de download.
  25. Fornece um módulo de download de mapas de contorno de províncias e cidades para baixar automaticamente mapas de contorno de cada região e salvá-los em arquivos de script ou arquivos de texto.
  26. Suporta ajuste manual dos limites de contorno de diferentes áreas. Após o ajuste, o conjunto de pontos de limite ajustado pode ser obtido ativamente.
  27. Fornece exemplos de pontos dinâmicos, seleciona manualmente pontos no mapa e adiciona rótulos, com informações personalizadas como velocidade e tempo.
  28. Fornece exemplos de pontos massivos, adiciona pontos de rótulo, agregação de pontos e pontos massivos em lotes. Usado para testar o desempenho máximo do ponto suportado no ambiente.
  29. Suporta conversão de coordenadas GPS e fornece métodos online e offline. Geralmente, o dispositivo recebe coordenadas GPS padrão, que precisam ser convertidas em coordenadas Baidu no Baidu Maps.
  30. É fornecido um exemplo de trajetória dinâmica. Depois de pressionar o mouse no mapa para selecionar o ponto inicial e o ponto final, a rota é consultada, os pontos da trajetória do caminho são obtidos e o cronômetro simula o movimento da trajetória. Os dados podem ser filtrados para filtrar pontos de referência excessivos até um determinado número de pontos.
  31. Fornece um exemplo de reprodução de trilha, que pode ser reproduzido de acordo com a lista de pontos de trilha especificada. Os dados de pontos de trilha também podem ser importados para reprodução. Ele também suporta a reprodução de trilhas em mapas de ruas, mapas de satélite e mapas mistos.
  32. Fornece exemplos de mapas regionais provinciais e municipais, usando o componente echart, e também suporta mapas de pontos intermitentes, mapas de migração, mapas regionais, mapas mundiais, painéis, etc. Você pode definir várias cores, como título, informações de prompt, cor de fundo, cor do texto, cor da linha, cor da área, etc.
  33. Exemplos de mapas regionais provinciais e municipais, mapa mundial integrado, mapa nacional, mapa provincial, mapa regional, preciso para o condado, todos os mapas podem ser usados ​​offline. Você pode definir o nome, valor, longitude e latitude da cidade.
  34. Componentes de navegador universais integrados e suporta webkit/webengine/miniblink e outros kernels. Fornece exemplos de controle de páginas da web para demonstrar a abertura de páginas da web e arquivos de páginas da web locais.
  35. Suporta qualquer versão Qt, qualquer sistema e qualquer compilador.

3. Uso de código

  1. Copie os dois diretórios de componentes core_map (componente do mapa)/core_webview (componente do navegador) para o diretório do seu projeto, preencha o código de importação no pro e adicione-o ao seu projeto. $PWD/…/ representa o diretório de nível superior.
include ($$PWD/../core_map/core_map.pri)
include ($$PWD/../core_webview/core_webview.pri)
  1. Para ativar o kernel do mapa no pro, por exemplo, o kernel do mapa do Baidu requer a adição de uma linha que define DEFINES = baidux no arquivo pro.
  2. Importe arquivos de cabeçalho.
#include "webview.h"
#include "mapbase.h"
  1. Crie um novo formulário e coloque um layout nele. Recomenda-se usar gridlayout, que pode colocar vários controles do navegador.
  2. Instancie a classe do navegador e a classe do mapa.
//实例化浏览器控件
WebView *webView = new WebView(this);
//加入到布局
webView-