Изменить местоположение маркера, когда Snapshotlistener обнаружит изменения в местоположении, Android-студия Google Maps api - PullRequest
0 голосов
/ 07 октября 2019

Добрый день! Я пытаюсь сделать приложение для отслеживания, где пользователь может отслеживать курьера. Но есть некоторые проблемы в некоторой логике и кодах о том, как я могу изменить маркер курьера только тогда, когда снимок обнаруживает некоторые изменения в его местоположении. Обратите внимание, что местоположение покупателя является статическим ( не изменится, даже если snapshotlistener обнаружит изменения в местоположении курьера ).

Пожалуйста, ознакомьтесь с моими кодами ниже:

db.collection("Transactions").whereEqualTo("transactionID", transID)
                        .addSnapshotListener(TrackingCourierActivity.this, new EventListener<QuerySnapshot>() {
                            @Override
                            public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
                                if (e != null) {
                                    Log.e("DB_Error", e.toString());
                                } else {
                                    for (DocumentChange dc: queryDocumentSnapshots.getDocumentChanges()){
                                        DocumentSnapshot documentSnapshot = dc.getDocument();
                                        TransactionsModel trasModel = documentSnapshot.toObject(TransactionsModel.class);
                                        HashMap<String, Object> buyerData = trasModel.getBuyerData();
                                        HashMap<String, Object> courierData = trasModel.getCourierData();
                                        GeoPoint addressLocation = (GeoPoint) buyerData.get("buyerAddress");
                                        GeoPoint courierLocation = (GeoPoint) courierData.get("courierLocation");

                                        double LatitudeData = addressLocation.getLatitude();
                                        double LongitudeData = addressLocation.getLongitude();
                                        final LatLng latLng = new LatLng(LatitudeData, LongitudeData);

                                        double storeLocationLatitude = courierLocation.getLatitude();
                                        double storeLocationLongitude = courierLocation.getLongitude();
                                        final LatLng courLatLng = new LatLng(storeLocationLatitude, storeLocationLongitude);

                                        LatLngBounds.Builder builder = new LatLngBounds.Builder();
                                        builder.include(latLng);
                                        builder.include(courLatLng);
                                        LatLngBounds bounds = builder.build();
                                        CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, 200);

                                        mMap.addMarker(pinned = new MarkerOptions()
                                                .position(latLng)
                                                .icon(BitmapDescriptorFactory.fromBitmap(
                                                        createCustomMarker(TrackingCourierActivity.this))).title("Your Pinned Address"));

                                        mMap.moveCamera(cu);
                                        Marker marker = mMap.addMarker(courier = new MarkerOptions()
                                                .position(courLatLng)
                                                .icon(BitmapDescriptorFactory.fromBitmap(
                                                        createCourierCustomMarker(TrackingCourierActivity.this))).title("Courier Location"));

                                        if (dc.getType().equals(DocumentChange.Type.MODIFIED)){
                                            marker.remove();
                                            courier = new MarkerOptions()
                                                    .position(courLatLng)
                                                    .icon(BitmapDescriptorFactory.fromBitmap(
                                                            createCourierCustomMarker(TrackingCourierActivity.this))).title("Courier Location");
                                            mMap.addMarker(courier);
                                        }
                                    }
                                }
                            }
                        });

Здесь я попытался определить местоположения пользователя и курьера, но когда произошли некоторые изменения в местоположении курьера, маркер не будет удален иэто будет только дублировать его.

...