получить координаты из базы данных и нарисовать их на карте - PullRequest
0 голосов
/ 02 марта 2019

Я сохранил набор координат в Firebase и хочу перенести эти координаты в мой проект Android, установить их на карте в качестве маркеров и нарисовать прямые линии между ними.Итак, это мой код onMapReady:

@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
    LatLng sydney = new LatLng(34.505688, 36.5946491);
    //mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 16));
    new MyAsyncTask().execute();}

И в MyAsycTask есть этот код:

private class MyAsyncTask extends AsyncTask<Void, Void, Void> {
    @Override
    protected Void doInBackground(Void... voids) {


        gettingCoordinates();

        return null;
    }
    @Override
    protected void onPostExecute(Void result) {
        drawPath();
    }
}

Здесь есть два метода, используемых в MyAsycTask:

    public void gettingCoordinates(){
    fireget.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
            HashMap<String,String> value=new HashMap<>();
            value=(HashMap<String,String>)dataSnapshot.getValue();

            Lan=Double.parseDouble(value.get("Latitude"));
            Long=Double.parseDouble(value.get("Longitude"));



            points.add(i,new LatLng(Lan,Long));

            i++;
        }

        @Override
        public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

}

И вот:

    public void drawPath(){
    for (LatLng point : points) {

        mMap.addMarker(new MarkerOptions()
                .icon(BitmapDescriptorFactory.fromResource(R.drawable.marker))
                .anchor(0.2f, 1.0f)
                .position(point));

        PolylineOptions rectOptions = new PolylineOptions()
                .width(5)
                .color(Color.RED)
                .add(point);
        polyline = mMap.addPolyline(rectOptions);
        polyline.setPoints(points);
    }
}

Итак, мой вопрос: когда я запускаю код, он сначала выполняет метод drawPath, а затем переходит к выполнению метода gettingCoordinates Вот моя структура firebase: https://i.stack.imgur.com/9CbYY.png Я надеюсь, что вы можете мне помочь.

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