【小沐学GIS】基于C++绘制二维瓦片地图2D Map(QT、OpenGL、GIS)

🍺三维数字地球系列相关文章如下🍺:
1【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、glfw、glut)第一期
2【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、glfw、glut、GIS)第二期
3【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、glfw、glut、GIS)第三期
4【小沐学GIS】基于C++绘制三维数字地球Earth(QT、OpenGL、GIS)第四期
5【小沐学GIS】基于C++绘制三维数字地球Earth(QT、OpenGL、GIS、卫星轨迹)第五期
6【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、GIS、SolarSystem,太阳系模拟)第六期
7【小沐学GIS】基于C++绘制二维瓦片地图2D Map(QT、OpenGL、GIS)
8【小沐学GIS】基于C++OpenSceneGraph(OSG)绘制三维数字地球Earth(7:OpenGL)
9【小沐学GIS】基于C#绘制三维数字地球Earth(10:OpenGL)
10【小沐学GIS】基于Python绘制三维数字地球Earth(11:OpenGL)
11【小沐学GIS】基于Android绘制三维数字地球Earth(12:OpenGL)
12【小沐学GIS】基于WebGL绘制三维数字地球Earth(13:OpenGL)
13【小沐杂货铺】基于Three.JS绘制三维数字地球Earth(GIS 、three.js、WebGL)
14【小沐杂货铺】基于Three.JS绘制三维太阳系Solar System(GIS 、three.js、WebGL)
15【小沐杂货铺】基于Three.JS绘制卫星轨迹Satellite(GIS 、three.js、vue、react)
16【小沐杂货铺】基于Cesium.JS绘制卫星轨迹Satellite(GIS 、Cesium、vue、react)

文章目录

  • 1、瓦片地图
  • 6、运行结果(2d瓦片地图)
    • 6.1 opengl / sdl / boost::asio / c++ (2d,瓦片贴图)
    • 6.2 opengl / curl / glad / glfw / stb / c++ (2d,瓦片贴图)
    • 6.3 opengl / sdl2 / sdl2_image / boost::asio / curl/ c++ (2d,瓦片贴图)
    • 6.4 opengl / sdl2 / sdl2_image / curl / c++ (2d,瓦片贴图)
    • 6.5 opengl / qt5 / glm / cpprest / c++ / 必应影像地图 (2d,瓦片贴图)
    • 6.6 qt5 / c++ / 影像地图 (2d,瓦片贴图)
    • 6.7 qt5 / c++ / OSM / 谷歌 / 必应 (2d,瓦片贴图)
    • 6.8 qt5 / c++ / OSM / 高德 / 天地图 (2d,瓦片贴图)
    • 6.9 qt5 / c++ / 多种地图源切换 (2d,瓦片贴图)
    • 6.10 qt5 / c++ / QtNetwork / QtWidgets(2d,瓦片贴图)
    • 6.11 qt5 / c++ / QtNetwork / QtWidgets(2d,瓦片贴图)
    • 6.12 qt5 / c++ / QtNetwork / QtWidgets(2d,瓦片贴图)
    • 6.13 qt5 / c++ / QtNetwork / QtWidgets(2d,瓦片贴图)
  • 结语

1、瓦片地图

使用 OpenGL 和 QT5 绘制 2D 瓦片地图:主要思路是通过 OpenGL 进行图形渲染,利用 QT5 提供的网络请求功能获取在线瓦片地图数据,并将其绘制到屏幕上。在代码中,需要创建一个 OpenGL 上下文,设置视口和投影矩阵,然后使用 OpenGL 的绘图函数来绘制地图瓦片。

6、运行结果(2d瓦片地图)

6.1 opengl / sdl / boost::asio / c++ (2d,瓦片贴图)

在这里插入图片描述

6.2 opengl / curl / glad / glfw / stb / c++ (2d,瓦片贴图)

在这里插入图片描述
在这里插入图片描述

6.3 opengl / sdl2 / sdl2_image / boost::asio / curl/ c++ (2d,瓦片贴图)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.4 opengl / sdl2 / sdl2_image / curl / c++ (2d,瓦片贴图)

在这里插入图片描述
在这里插入图片描述

6.5 opengl / qt5 / glm / cpprest / c++ / 必应影像地图 (2d,瓦片贴图)

  • qt vs tool插件下载地址
    https://download.qt.io/archive/vsaddin/2.3.2/

  • 必应地图瓦片原理介绍
    https://learn.microsoft.com/en-us/bingmaps/articles/bing-maps-tile-system
    在这里插入图片描述

  • 必应地图瓦片key简介
    https://www.microsoft.com/en-us/maps/bing-maps/create-a-bing-maps-key

    1. 第一步:若没有Microsoft帐号,要先注册一个Microsoft帐号;
    2. 注册完成后,打开这个链接:www.bingmapsportal.com并选“sign in”登录Microsoft帐号;
    3. 在 “My account” 选项中选择 “My Keys”;
    4. 在 “My Keys” 中 “Create Key” ,同时填写您应用程序的相关信息。注意密钥类别选择 “Basic”,应用程序类型填写“Website”,然后点击“Create”;
    5. 生成密钥后,点击“Show key”即可显示密钥,复制下来添加到网站后台的bing地图组件里即可。
      在这里插入图片描述
  • cpprest库地址
    https://github.com/microsoft/cpprestsdk

在这里插入图片描述
在这里插入图片描述

6.6 qt5 / c++ / 影像地图 (2d,瓦片贴图)

QT       += network sql widgets

在这里插入图片描述
在这里插入图片描述

6.7 qt5 / c++ / OSM / 谷歌 / 必应 (2d,瓦片贴图)

在这里插入图片描述

6.8 qt5 / c++ / OSM / 高德 / 天地图 (2d,瓦片贴图)

在这里插入图片描述

6.9 qt5 / c++ / 多种地图源切换 (2d,瓦片贴图)

在这里插入图片描述

6.10 qt5 / c++ / QtNetwork / QtWidgets(2d,瓦片贴图)

在这里插入图片描述
在这里插入图片描述

6.11 qt5 / c++ / QtNetwork / QtWidgets(2d,瓦片贴图)

在这里插入图片描述
在这里插入图片描述

6.12 qt5 / c++ / QtNetwork / QtWidgets(2d,瓦片贴图)

在这里插入图片描述
在这里插入图片描述

6.13 qt5 / c++ / QtNetwork / QtWidgets(2d,瓦片贴图)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

以上章节所有地球代码,均在VS2017或QT5开发环境编译通过。

结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/79430.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea左侧项目资源管理器不见了处理

使用idea误触导致,侧边栏和功能栏没了,如何打开? 1.打开文件(File) 2. 打开设置(Settings) 3.选择Appearance&Behavior--->Appearance划到最下面,开启显示工具栏和左侧并排布…

[Java实战]Spring Boot 静态资源配置(十三)

[Java实战]Spring Boot 静态资源配置(十三) 引言 静态资源(如 HTML、CSS、JavaScript、图片等)是 Web 应用的基石。Spring Boot 通过自动化配置简化了静态资源管理,但面对复杂场景(如多模块项目、CDN 集成…

多模态大语言模型arxiv论文略读(六十九)

Prompt-Aware Adapter: Towards Learning Adaptive Visual Tokens for Multimodal Large Language Models ➡️ 论文标题:Prompt-Aware Adapter: Towards Learning Adaptive Visual Tokens for Multimodal Large Language Models ➡️ 论文作者:Yue Zha…

Python 基础语法与数据类型(七) - 函数的定义与调用 (def, return)

文章目录 为什么要使用函数?函数的定义 (def)函数的调用函数参数 (Parameters vs Arguments)返回值 (return)变量作用域 (简要了解)总结练习题练习题答案 **创作不易,请大家点赞加收藏,关注我,持续更新教程!** 到目前为…

华为配置篇-RSTP/MSTP实验

MSTP 一、简介二、常用命令总结三、实验 一、简介 RSTP(快速生成树协议)​ RSTP(Rapid Spanning Tree Protocol)是 STP 的改进版本,基于 ​​IEEE 802.1w 标准​​,核心目标是解决传统 STP 收敛速度慢的问…

Docker Compose 完全指南:从入门到生产实践

Docker Compose 完全指南:从入门到生产实践 1. Docker Compose 简介与核心价值 Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过一个 YAML 文件来配置应用的服务,只需简单命令就能创建和启动所有服务。 核心优势:…

Linux 离线安装 Docker 和 Docker Compose 最新版 的完整指南

一、准备工作 1. 下载安装包​(需在有网络的机器操作): Docker 引擎:从官方仓库下载最新二进制包 wget https://download.docker.com/linux/static/stable/x86_64/docker-24.0.6.tgz​Docker Compose:下载最新二进制…

CSS: 选择器与三大特性

标签选择器 标签选择器就是选择一些HTML的不同标签&#xff0c;由于它们的标签需求不同&#xff0c;所以CSS需要设置标签去选择它们&#xff0c;为满足它们的需求给予对应的属性 基础选择器 标签选择器 <!DOCTYPE html> <head><title>HOME</title>…

鸿蒙跨平台开发教程之Uniapp布局基础

前两天的文章内容对uniapp开发鸿蒙应用做了一些详细的介绍&#xff0c;包括配置开发环境和项目结构目录解读&#xff0c;今天我们正式开始写代码。 入门新的开发语言往往从Hello World开始&#xff0c;Uniapp的初始化项目中已经写好了一个简单的demo&#xff0c;这里就不再赘述…

JavaSE核心知识点02面向对象编程02-08(异常处理)

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 JavaSE核心知识点02面向对象编程02-08&#…

【JVM-GC调优】

一、预备知识 掌握GC相关的VM参数&#xff0c;会基本的空间调整掌握相关工具明白一点&#xff1a;调优跟应用、环境有关&#xff0c;没有放之四海而皆准的法则 二、调优领域 内存锁竞争cpu占用io 三、确定目标 【低延迟】&#xff1a;CMS、G1&#xff08;低延迟、高吞吐&a…

基于单片机的电子法频率计

一、电子计数法测频率原理 通过门控控制闸门开关&#xff0c;闸门时间T自己设定&#xff0c;计数器计数脉冲个数N&#xff08;也就是待测信号&#xff09;&#xff0c;N个脉冲的时间间隔为δt,倒数即为信号的频率f,由此 δtT/N fN/T——信号频率 根据公式&#xff0c;如果考虑…

【C/C++】跟我一起学_C++同步机制效率对比与优化策略

文章目录 C同步机制效率对比与优化策略1 效率对比2 核心同步机制详解与适用场景3 性能优化建议4 场景对比表5 总结 C同步机制效率对比与优化策略 多线程编程中&#xff0c;同步机制的选择直接影响程序性能与资源利用率。 主流同步方式: 互斥锁原子操作读写锁条件变量无锁数据…

判断两台设备是否在同一局域网内的具体方法

以下是判断两台设备是否在同一局域网内的具体方法&#xff1a; 1. 检查IP地址和子网掩码 操作步骤&#xff1a; Windows系统&#xff1a; 按 Win R 键&#xff0c;输入 cmd 并回车。输入 ipconfig&#xff0c;查看 IPv4 地址 和 子网掩码&#xff08;如 192.168.1.5/255.255.2…

在R语言中如何将列的名字改成别的

在 R 中&#xff0c;更改数据框&#xff08;data frame&#xff09;中列的名字可以通过多种方法实现。以下是几种常见的方法&#xff1a; 方法 1&#xff1a;使用 names() 函数 names() 函数可以获取或设置数据框的列名。 示例 假设我们有一个数据框 data&#xff1a; dat…

JUC并发编程(上)

一、JUC学习准备 核心知识点&#xff1a;进程、线程、并发&#xff08;共享模型、非共享模型&#xff09;、并行 预备知识&#xff1a; 基于JDK8,对函数式编程、lambda有一定了解 采用了slf4j打印日志 采用了lombok简化java bean编写 二、进程与线程 进程和线程概念 两者对比…

单地平面6层PCB设计实战:如何兼顾电源与信号完整性?

摘要&#xff1a;面对复杂系统&#xff08;SDRAM、WiFi、电机驱动等&#xff09;且仅有1层地平面的6层板设计挑战&#xff0c;本文从层叠规划、电源噪声抑制、高速信号处理等角度&#xff0c;总结可落地的设计技巧与避坑指南。 一、层叠设计&#xff1a;6层板如何“挤”出最优布…

spark:map 和 flatMap 的区别(Scala)

场景设定 假设有一个包含句子的 RDD&#xff1a; scala val rdd sc.parallelize(List("Hello World", "Hi Spark")) 目标是&#xff1a;将每个句子拆分成单词。 1. 用 map 的效果 代码示例 scala val resultMap rdd.map(sentence > sentence…

基于VSCode+PlatformIO环境的ESP8266的HX1838红外模块

以下是针对ESP8266开发板的红外遥控解码系统开发教程&#xff0c;基于VSCodePlatformIO环境编写 一、概述 本实验通过ESP8266开发板实现&#xff1a; 红外遥控信号解码自定义按键功能映射串口监控输出基础设备控制&#xff08;LED&#xff09; 硬件组成&#xff1a; NodeMC…

Kubernetes排错(十四):Pod状态异常排查手册

当你在凌晨三点收到告警&#xff0c;发现Pod在崩溃循环中挣扎时&#xff0c;如何快速定位问题&#xff1f;本文将为你梳理一套生产环境通用的Pod排错流程&#xff0c;并附上救火队员必备的实用命令清单&#xff01; 一、5分钟快速定位&#xff1a;四步锁定问题方向 步骤1&…