查看完整版本: [-- Qt for android 5.4引用百度地图android sdk问题 --]

QTCN开发网 -> Qt移动平台开发 -> Qt for android 5.4引用百度地图android sdk问题 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

nikonice 2016-01-21 10:55

Qt for android 5.4引用百度地图android sdk问题

我的需求是需要在手机上显示百度地图并且可以进行动态标注
刚开始选择了Qml内的webview,可以显示百度地图。晕倒的是不支持与百度地图的动态交互。放弃之
前几天看了安神的JNI调用Java和一个利用腾讯信鸽的例子。我想把百度地图的android的sdk引入到Qt里

按照百度的文档一步一步的都弄到了Qt里
1、申请Key,把百度sdk的jar等等的包放入libs内;
2、修改AndroidManifest文件
3、修改布局文件
4、加入Java代码到项目

#ifdef ANDROID
    QAndroidJniObject::callStaticMethod<void>("an/qt/extendsQtWithJava/GSTBaiduMap","BMap","()");
#endif
引用。
编译通过,成功了????放到手机里安装了,但是结果非我所愿,程序打开就错误退出。
Java代码如下
package an.qt.extendsQtWithJava;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BaiduMapOptions;
import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.model.LatLng;

import android.view.Window;

import com.baidu.mapapi.SDKInitializer;



public class GSTBaiduMap
extends  org.qtproject.qt5.android.bindings.QtActivity
{

    @SuppressWarnings("unused")
            private static final String LTAG = GSTBaiduMap.class.getSimpleName();
            private MapView mMapView;
            private BaiduMap mBaiduMap;
            private static GSTBaiduMap     m_instance;
            @Override
                public void onCreate(Bundle savedInstanceState)
                {
                    super.onCreate(savedInstanceState);

                    requestWindowFeature(Window.FEATURE_NO_TITLE);

                    BMap();
                    mMapView = (MapView) findViewById(R.id.bmapView);
                }

            public GSTBaiduMap()
            {
                    m_instance= this;
            }
            public static void BMap()
            {
                SDKInitializer.initialize(m_instance.getApplicationContext());
                m_instance.setContentView(R.layout.activity_main);
            }

            @Override
              protected void onDestroy()
              {
                   super.onDestroy();
                    // 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
                   mMapView.onDestroy();
                   mMapView = null;
              }

                @Override
                protected void onResume()
                {
                    super.onResume();
                    // 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
                    mMapView.onResume();
                }

               @Override
               protected void onPause()
                {
                    super.onPause();
                    // 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
                    mMapView.onPause();
               }


    }

估计是不能用java直接显示,应该把这些东西引入Qt里,利用Qt的控件来显示。

哪位高人给指点一下啊,怎样把这些东西引入到Qt,该用什么控件来显示百度地图呢???

foxgod 2016-01-25 14:18
我也在学习,也是不用在QT 里面调用百度地图的andriod

nikonice 2016-01-29 16:26
引入百度地图SDK已经成功,可以显示出百度地图并标注
但是这个方法与Qt无关,是配置AndroidManifest.xml把百度地图的activity配置成
<activity android:name="百度地图tActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait" android:label="地理信息">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
</activity>
就可以在程序开始就启动百度地图

但是我现在不想程序开始就启动百度地图,而是想按动按钮来启动百度地图的Activity
没有启动成功
我是用
QAndroidJniObject action = QAndroidJniObject::fromString("com.gst.GstMap");
    QAndroidJniObject intent("android/content/Intent","(Ljava/lang/String;)V", action.object<jstring>());
    QtAndroid::startActivity(intent, 0);
其中com.gst.GstMap是百度地图的Activity
来启动的,没有成功啊,求高手指点一下

彩阳 2016-02-05 19:45
看看KDAB的文章。
仔细地看,你一定会知道如何解决的。
https://www.kdab.com/qt-android-episode-7/

飘逸孤魂 2016-10-10 18:06
楼主问题解决了吗?

飘逸孤魂 2016-10-11 09:47
解决能发我一份吗?327926614@qq.com

喝假酒的球球 2018-07-07 15:32
请问这么构建的话是不需要cpp文件吗?
还有 “#ifdef ANDROID
    QAndroidJniObject::callStaticMethod<void>("an/qt/extendsQtWithJava/GSTBaiduMap","BMap","()");
#endif” 这一段是在.h文件中添加吗?


查看完整版本: [-- Qt for android 5.4引用百度地图android sdk问题 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled