小编Zde*_*aun的帖子

Android谷歌地图异步任务添加标记

我有一张地图.我有一个积分数据库.我想在AsyncTask中显示来自数据库的点,因此用户可以在加载点时在地图上移动.没有多少分(如353等),但是当用户靠近(缩放)到具有更大标记的地图时,我会重绘它们.当重绘时,应用程序冻结了几分之一秒,但它很明显,所以我认为AsyncTask就是答案.

然而,它不起作用.这很奇怪.我在这里找到了一些问题,但问题主要是没有调用"publishProgress()"方法,这不是我的情况.

在方法"doInBackground()"中,我打开数据库,执行查询并将其保存到Cursor(这是我的ShowPoints类的属性,它扩展了AsyncTask,所以它至少可以被这个类的所有方法访问//至少我觉得).比我经历光标并且每次调用"publishProgress()",其中shoud调用"onProgressUpdate()",在这里我使用我的光标从"doInBackgroud()"创建标记.

奇怪的是,如果我进行调试,并逐步完成代码,那么一切都会正常运行.但是当我运行应用程序时,没有添加任何标记或只添加其中一些标记.

private class ShowPoints extends AsyncTask<String, Integer, String> {

      private String resp="Body na?teny";
      private Cursor c_body;
      private LatLng marker_pozice;

      @Override
      protected String doInBackground(String... params) {
          int i=0;
       try {
           DatabaseHelper db = new DatabaseHelper(MainActivity.this);
            try {

                db.openDataBase();

            }catch(SQLException sqle){

                throw sqle;

            }
            c_body = db.query(DatabaseHelper.TABLE_POINTS, allColumns, null, null, null,null, null);
            if(c_body.moveToFirst())
            {
                if(params[0]=="small"){
                    do {
                            i++;
                        int ikona = R.drawable.gray_dot;
                        int trasa = c_body.getInt(6);
                        switch(trasa){
                        case 1: ikona = R.drawable.color_00a750_dot;
                        break;
                        case 2: ikona = R.drawable.color_ec1c24_dot;
                        break; …
Run Code Online (Sandbox Code Playgroud)

android google-maps google-maps-markers android-asynctask

5
推荐指数
1
解决办法
9479
查看次数