Qt QML控制OSM地图时瓦片获取Permission denied错误求助
问题解决办法
- 修正非法缩放级别配置
OSM地图的标准缩放级别范围为1~19,仅部分自定义图源最高支持到20级,你当前配置zoomLevel: 60远超过合法范围,会请求不存在的瓦片资源,直接修改为合理值即可测试,例如:
zoomLevel: 10
- 更新OSM插件配置,适配HTTPS协议要求
你当前使用的http://maps-redirect.qt.io/osm/5.6/是Qt早年的HTTP重定向地址,目前主流OSM图源均已强制要求HTTPS访问,直接替换Plugin配置为以下内容,直接绑定官方公共图源即可:
Plugin { id: mapPlugin name: "osm" PluginParameter { name: "osm.mapping.custom.host" value: "https://tile.openstreetmap.org/" } PluginParameter { name: "osm.mapping.providersrepository.disabled" value: "true" } // 可选:自定义本地瓦片缓存路径,避免默认目录无读写权限 PluginParameter { name: "osm.mapping.cache.directory" value: "./osm_tile_cache" } }
- 检查网络权限与SSL依赖
- 若在移动端运行:Android需要在
AndroidManifest.xml中添加<uses-permission android:name="android.permission.INTERNET" />权限,iOS需要在Info.plist中配置NSAppTransportSecurity规则允许网络访问。 - 若在桌面端运行:确认系统防火墙/代理没有限制程序的网络访问,同时保证Qt运行环境包含OpenSSL依赖,Windows下需要将对应版本的
libcrypto-1_1-x64.dll、libssl-1_1-x64.dll放到程序运行目录。
- 修正C++代码属性定义笔误
你提供的C++代码中Q_PROPERTY定义存在笔误,第一个属性名误写为gnss_log,和读取函数名不匹配,会导致QML侧无法正常读取该属性值,修正为:
Q_PROPERTY(double gnss_long READ gnss_long WRITE set_gnss_long NOTIFY gnss_long_changed);
内容的提问来源于stack exchange,提问作者unity123
相关产品推荐
相关产品推荐

