(一)QML加载离线地图+标记坐标点

1、实现效果

  • 加载离线地图瓦片、鼠标拖拽、滚轮缩放
  • 在地图上固定坐标位置标注地名

(一)QML加载离线地图+标记坐标点:MiniMap-mini

2、实现方法

2.1、使用工具下载离线地图

不废话,直接搬别人的砖,曰:他山之石可以攻玉!

2.2、QML加载离线地图

官网上有参考例子:QtLocation: using offline map tiles with the OpenStreetMap plugin,完全不需要像很多网站上说的那样骚操作。网页上说明了QtLocation加载离线地图的原理:指定了离线地图路径后,plugin会优先从该路径中查瓦片,找不到才从provider获取该瓦片。(嗯,好像无懈可击!)

With QtLocation 5.8 it is possible to pass an additional offline directory to theOSM plugin. When this parameter is present, tiles will be sourced from the specified directory before being searched in the tile cache, and, after that, being requested to the provider.

关键点在于将离线地图放到qrc资源文件中,这样就可以用相对路径来访问离线地图瓦片了。如果不这样做,osm.mapping.offline.directory就只能采用绝对路径。

复制代码
    Plugin {
        id: mapPlugin
        name: "osm"

        PluginParameter{
            name: "osm.mapping.offline.directory"
            value: ":/offline_tiles/"
        }
    }

经验之谈:当zoomLevel较大时,qrc资源文件放入的瓦片太多了,编译会很慢,甚至Qt会卡死。因此,需要选择恰当的zoomLevel。

2.3、在地图上做标记

标记其实很简单,在指定坐标上添加图像即可,使用MapQuickItem来实现。

复制代码
        // 成都
        MapQuickItem {
            id: chengdu
            anchorPoint.x: image_axis_x()
            anchorPoint.y: image_axis_y()
            coordinate: QtPositioning.coordinate(30.659462, 104.065735)
            sourceItem: Column {Image{id: img1; source: "marker.png"}}
        }

让人不爽的是,地图在缩放过程中,Marker标记位置并不精准,还需要优化。

2.4、GitCode源码分享

QT / MiniMap · GitCode离线地图上标注坐标点https://gitcode.net/qt4/MiniMap.git

相关推荐
_君莫笑4 天前
Qt+Qml前后端分离上位机软件技术方案
c++·qt·用户界面·qml
Ulyanov14 天前
《现代 Python 桌面应用架构实战:PySide6 + QML 从入门到工程化》:QML 声明式语法与霓虹按钮 —— 当 Python 遇见现代美学
开发语言·python·ui·qml·系统仿真·雷达电子对抗仿真
gdizcm19 天前
QT QML嵌入Widget窗体并通信
qt·qml·widget与qml
谁刺我心21 天前
[QML]Functional功能型控件-虚拟键盘
开发语言·qml·虚拟键盘
Ulyanov21 天前
《PySide6 GUI开发指南:QML核心与实践》 第十篇:综合实战——构建完整的跨平台个人管理应用
开发语言·python·qt·ui·交互·qml·雷达电子战系统仿真
Ulyanov21 天前
《PySide6 GUI开发指南:QML核心与实践》 第八篇:性能优化大师——QML应用性能调优实战
python·qt·ui·性能优化·qml·系统仿真
Ulyanov22 天前
《PySide6 GUI开发指南:QML核心与实践》 第一篇:GUI新纪元——QML与PySide6生态系统全景
开发语言·python·qt·qml·雷达电子对抗
大橘1 个月前
【qml-5.1】qml与c++交互(QML_ELEMENT/QML_SINGLETON)
开发语言·c++·qt·交互·qml
镜中月ss2 个月前
QT中的资源树
开发语言·qt·qml
习惯就好zz2 个月前
Qt Quick 系统托盘完整实践
开发语言·qt·qml·系统托盘·system tray·qapplication·qguiapplication