Я работаю над проектом Android, который отображает маркеры, представляющие местоположение пользователей на карте, и маркер, представляющий определенное место. В моем проекте я использую API Google Map, я пишу приведенный ниже код, но у меня возникает проблема каждый раз, когда Обновление местоположения пользователя в базе данных добавляет новый маркер вместо перемещения пользовательского маркера, я знаю это, потому что я создаю маркер каждый раз, когда меняются данные, но я не могу понять, как его решить, я много искал все Решения, которые я нашел, заключались в перемещении одного маркера в конечный пункт назначения.
@Override
public void onMapReady(GoogleMap googleMap) {
map = googleMap;
// to display current user location
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
map.setMyLocationEnabled(true);
} else {
// Show rationale and request permission.
}
// to show the place marker
LatLng location = new LatLng(lat1, lon1);
map.addMarker(new MarkerOptions().position(location).title(title).snippet(date).icon(BitmapDescriptorFactory.fromResource(R.drawable.lostflag)));
map.moveCamera(CameraUpdateFactory.newLatLng(location));
// when users location update in DB
rootRef=FirebaseDatabase.getInstance().getReference("volunteer/"+Pid);
rootRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot propertySnapshot :dataSnapshot.getChildren()) {
if(propertySnapshot.getKey()!=userID){
Volunteer volunteer1 = propertySnapshot.getValue(Volunteer.class);
boolean statue = volunteer1.getState();
if (statue) {// if it volunteer
double latitude = volunteer1.getLatitude();
double longitude = volunteer1.getLongitude();
LatLng location1 = new LatLng(latitude, longitude);
map.addMarker(new MarkerOptions().position(location1).icon(BitmapDescriptorFactory.fromResource(R.drawable.volunteer)));
}
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}