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

1、实现效果

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

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

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 the OSM 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离线地图上标注坐标点icon-default.png?t=N7T8https://gitcode.net/qt4/MiniMap.git

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Qt5是一种跨平台的开发框架,它支持开发各种应用程序,包括离线地图的展示。离线地图demo是一个示例程序,用于展示如何在Qt5中使用离线地图功能。 离线地图demo首先需要准备离线地图数据。我们可以使用开源地图数据提供商,如OpenStreetMap,下载相应的地图数据文件。然后,将这些数据文件导入到应用程序的资源中,以便在离线状态下使用。 接下来,在Qt5中创建一个地图视图窗口,并在窗口中显示地图。我们可以使用Qt自带的QtLocation模块来加载地图数据,并使用QGeoTileMap类将地图数据展示在窗口中。 离线地图demo还可以实现一些基本的地图交互功能。例如,我们可以在地图上添加标记,用于标记特定的位置。我们可以使用QGeoCoordinate类来表示地理坐标,并使用QGeoMapPolygon类来将地理坐标连接起来形成一个多边形区域。通过这些功能,我们可以在地图上进行定位、测量以及路径规划等操作。 除了基本的地图展示和交互功能,离线地图demo还可以扩展更多的功能。例如,我们可以添加搜索功能,让用户在地图上搜索特定的地。我们可以使用QPlaceSearchRequest类来发送搜索请求,并使用QPlaceSearchReply类获取搜索结果。同时,我们还可以结合其它功能,如数据可视化、导航等来丰富应用程序的功能。 总的来说,Qt5离线地图demo展示了如何在Qt5中使用离线地图功能,并提供了基本的地图展示、交互以及一些扩展的功能。通过这个示例程序,开发者可以快速了解并使用Qt5的离线地图功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值