Как сделать задним фоном перемещение маркера на карте - PullRequest
0 голосов

В моей активности в Картах у меня есть AsyncTask, который связывается с помощью сокетов с другой программой и получает некоторую информацию.Согласно этой информации, я должен переместить определенные маркеры на моей карте.Как это будет возможно?

Если я просто попытаюсь использовать setPosition () непосредственно из задачи фонового режима, это не сработает.

Движение маркеров, скажем, не имеет значенияЯ, все необходимые списки, MarkerOptions и т. д. будут добавлены.Проблема в том, ГДЕ делать их так, чтобы карта обновлялась, и я мог видеть движущиеся маркеры (помещение их в onMapReady не работает. Функция должна завершиться, чтобы карта появилась).

Вот задание фонового режима:


class backTask extends AsyncTask<Void, Void, Void>
    {
        Consumer consumer;

        public backTask(Consumer c)
        {
            this.consumer = c;
        }

        @Override
        protected Void doInBackground(Void... voids)
        {
            String comm_info = consumer.Start();

            StringTokenizer tok = new StringTokenizer(comm_info, "+");
            int bro_port = Integer.parseInt(tok.nextToken());
            String bro_ip = tok.nextToken();

            //keep asking for updates
            Message question = new Message("update?");
            Message answer;

            try
            {
                while(true)
                {
                    Socket Con_sock = new Socket(InetAddress.getByName(bro_ip), bro_port);
                    ObjectOutputStream ask = new ObjectOutputStream(Con_sock.getOutputStream());
                    ObjectInputStream rep = new ObjectInputStream(Con_sock.getInputStream());


                    //asking
                    ask.writeObject(question);
                    ask.flush();

                    //get response
                    answer = (Message) rep.readObject();
                    if (answer.type == 2)
                    {
                        //No update
                    }
                    else if (answer.type == 0)
                    {
                        //got update
                        //move / create markers here
                    }
                    Thread.sleep(500);
                }//loop
            } catch (IOException e) {
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return null;
        }

    }//backTask END
}

И метод onMapReady:

public void onMapReady(GoogleMap googleMap)
    {
        mMap = googleMap;

        LatLng athens = new LatLng(37.93, 23.731960);
        mMap.moveCamera(CameraUpdateFactory.newLatLng(athens));
        mMap.animateCamera(CameraUpdateFactory.zoomTo(13));

        Consumer con = (Consumer)getIntent().getExtras().get("Consumer");
        backTask BT = new backTask(con);
        BT.execute();
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...