在带有 Qt 5.6 的 Android 上使用 Google 地图的最简单方法是啥?

Posted

技术标签:

【中文标题】在带有 Qt 5.6 的 Android 上使用 Google 地图的最简单方法是啥?【英文标题】:What is the simplest way to use Google map on Android with Qt 5.6?在带有 Qt 5.6 的 Android 上使用 Google 地图的最简单方法是什么? 【发布时间】:2016-10-23 12:06:49 【问题描述】:

当我尝试使用 QQuickWidget 显示 Mapbox 的 QML(我的自定义 access_token 和 map_id)时:http://doc.qt.io/qt-5/qtlocation-places-map-places-map-qml.html

然后它在 Windows/Linux 上运行良好,但在 android 7.0 - API 24 上出现黑屏,使用当前 Android SDK 工具 25.2.2

有输出:

W libQtGUI.so: (null):0 ((null)): QOpenGLShader::compile(Vertex): ERROR: Valid GLSL but not GLSL ES
W libQtGUI.so: (null):0 ((null)): *** Problematic Vertex shader source code ***
W libQtGUI.so: (null):0 ((null)): #define lowp
W libQtGUI.so: #define mediump
W libQtGUI.so: #define highp
W libQtGUI.so: #line 1
W libQtGUI.so: attribute highp vec3 vertexCoord;attribute highp vec2 textureCoord;varying highp vec2 uv;uniform highp mat4 vertexTransform;uniform highp mat3 textureTransform;void main()    uv = (textureTransform * vec3(textureCoord,1.0)).xy;   gl_Position = vertexTransform * vec4(vertexCoord,1.0);
W libQtGUI.so: (null):0 ((null)): ***
W libQtGUI.so: (null):0 ((null)): QOpenGLShader::compile(Fragment): ERROR: Valid GLSL but not GLSL ES
W libQtGUI.so: (null):0 ((null)): *** Problematic Fragment shader source code ***
W libQtGUI.so: (null):0 ((null)): #define lowp
W libQtGUI.so: #define mediump
W libQtGUI.so: #define highp
W libQtGUI.so: #line 1
W libQtGUI.so: varying highp vec2 uv;uniform sampler2D textureSampler;uniform bool swizzle;uniform highp float opacity;void main()    highp vec4 tmpFragColor = texture2D(textureSampler,uv);   tmpFragColor.a *= opacity;   gl_FragColor = swizzle ? tmpFragColor.bgra : tmpFragColor;
W libQtGUI.so: (null):0 ((null)): ***
W libQtGUI.so: (null):0 ((null)): QOpenGLShader::link: "'"
W libQtGUI.so: (null):0 ((null)): Could not link shader program:
W libQtGUI.so:  "'"
W libQtGUI.so: (null):0 ((null)): QOpenGLShader::link: "'"
E emuglGLESv2_enc: glDrawArrays: a vertex attribute array is enabled with no data bound
E emuglGLESv2_enc: glDrawArrays: a vertex attribute array is enabled with no data bound

如果我从 https://dl.google.com/android/repository/tools_r25.1.7-windows.zip 降级到 Android SDK 工具 25.1.7,则 QQuickWidget 仅在 MainWindow 上显示 Android 上 Mapbox 的良好 QML,但在任何其他 QDialog 上不显示任何内容。 p>

在带有 Qt 5.6 的 Android 上使用 Google 地图的最简单方法是什么?

【问题讨论】:

【参考方案1】:

我相信您可以在 github 上找到提供 google 磁贴的非官方 QtLocation 地理服务提供商插件。 由于 Google TOS 阻止其他人在应用程序框架中提供这些地图,因此无法正式提供这些地图。

【讨论】:

以上是关于在带有 Qt 5.6 的 Android 上使用 Google 地图的最简单方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac 10.11 上使用 QT 5.6 构建 QtWebKit

QMediaPlayer 在 Ubuntu 16.04 / Qt 5.6 上不播放任何内容

使用 Qt 5.5 或 5.6 打印网页的 HTML/内容

QT Commercial 5.6 的 QT 条形图/图表

如何在 Windows 10 上将 Quazip 与 Qt 5.6、Qt Creator 一起使用?

如何通过 Qt 在 Android 和桌面中使用相机