Добрый день! Я пытаюсь сделать приложение для отслеживания, где пользователь может отслеживать курьера. Но есть некоторые проблемы в некоторой логике и кодах о том, как я могу изменить маркер курьера только тогда, когда снимок обнаруживает некоторые изменения в его местоположении. Обратите внимание, что местоположение покупателя является статическим ( не изменится, даже если 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);
}
}
}
}
});
Здесь я попытался определить местоположения пользователя и курьера, но когда произошли некоторые изменения в местоположении курьера, маркер не будет удален иэто будет только дублировать его.