QML 地图修改插件源码(一)解决Map使用Open Street Map(OSM)无法加载在线地图的解决办法

15 篇文章 32 订阅

最近在使用Qml地图中发现,osm地图在线加载地图失败,通过查看osm插件源代码,找到了osm瓦片地图的源地址为:http://c.tile.openstreetmap.org/%z/%x/%y.png,其中z,x,y分别代表了瓦片地图的缩放倍数,瓦片坐标序号,详细介绍可搜索相关内容,此处不多赘述,直接用浏览器访问地址,如:https://a.tile.openstreetmap.org/2/3/3.png,瓦片地图正常加载,通过查看Qt中osm插件的源码后发现,当osm地图类型为StreetMap时,瓦片获取地址被重定向为:"https://maps.wikimedia.org/osm-intl/%z/%x/%y.png",不知何故该地址是无法访问的,因此需要重新写重定向地址。

具体方法为:找到并打开osm插件源码工程位置:C:\Qt\Qt5.15.2\5.15.2\Src\qtlocation\src\plugins\geoservices\osm\osm.pro,在"qgeotileproviderosm.cpp"文件的 TileProvider::onNetworkReplyFinished()函数中,将地址重定向行修改如下:

//    m_urlTemplate = urlTemplate.toString();//之前代码
    if(urlTemplate.toString() =="https://maps.wikimedia.org/osm-intl/%z/%x/%y.png")
        m_urlTemplate = "http://c.tile.openstreetmap.org/%z/%x/%y.png";
    else
        m_urlTemplate = urlTemplate.toString();

重新编译该插件,编译好的插件位于Qt安装盘符根目录下,比如我Qt安装在C盘,路径就是:C:\plugins\geoservices\文件中,将qtgeoservices_osm.dll和qtgeoservices_osm.dll.debug复制替换至Qt安装插件文件夹C:\Qt\Qt5.15.2\5.15.2\mingw81_64\plugins\geoservices\,此时osm的StreetMap就可以在线加载了,上图:

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵喵叫的猴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值