在带有 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 上不播放任何内容