QT Qwebengine 获取高德地图leaflet鼠标位置经纬信息
最近在开发时遇到需要显示离线瓦片地图的问题,并且希望能获取鼠标位置的经纬度信息,从全能地图下载器(搜一下就有)下载了1-18级离线地图。Qt这方面的解决方案非常少,遇到了非常多的问题:
1.如果从头开发一个地图界面非常麻烦,这里选择用Qwebengine显示一个web界面,而且web开发有现成的leaflet库,非常的方便!但是仅有一点微薄的html基础并且完全没接触过js,直接一头雾水,好在js语法非常简单,菜鸟教程一个上午就能了解个大概。
leaflet中文站Documentation - Leaflet - 一个交互式地图 JavaScript 库
QWebEngineView也可以直接显示html界面,但是注意!用来和js交换数据的webchannel只作用在page,而且page会遮挡鼠标对QWebEngineView的操作。
2.用leaflet加载地图完成后发现坐标显示经纬和图片不是一个,经了解才知道原来高德地图用的坐标系称为火星坐标系(GCJ-02)而leaflet用的是84坐标系!于是这篇文章救了我。
Leaflet加载高德瓦片到WGS84坐标系下_leaflet 坐标系_才华横溢吴道简的博客-CSDN博客
包括第一个问题也解决了,只需要下载对应的js到本地即可完成离线(瓦片图也可以改为本地地址)
proj4.js下载地址:Releases · kartena/Proj4Leaflet · GitHub
3.在完成地图加载以后,需要QT获取地图的经纬坐标,这就需要QT与JS进行交互,直接参考这篇文章:https://www.cnblogs.com/sigma0/p/7346727.html
注意:这篇文章的重点4在我的leaflet版本上失效,需要将 updateInfo(e.point.lng,e.point.lat);改成updateInfo(e.latlng.lng,e.latlng.lat);
最后,缝合完成!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?