Ich habe ein Problem. Ich erhalte meine Breiten- und Längengrade in Echtzeit-Firebase und erstelle einen Marker, aber jedes Mal, wenn der Längen- und Breitengrad aktualisiert wird, wird ein weiterer Marker erstellt.Vorherige Markierung entfernen
Wie kann ich den vorherigen Marker löschen? Hier ist mein Code:
passRef = new Firebase(Config.FIREBASE_URL_PASSENGER);
passRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapShot : dataSnapshot.getChildren()) {
for (int cnt = 0; cnt <= dataSnapshot.getChildrenCount(); cnt++) {
if (snapShot.child("latitude").exists() && snapShot.child("longitude").exists() && snapShot.child("destination").exists()) {
passUsername = snapShot.child("name").getValue().toString();
//getting the passenger's current location
locLatPass = Double.valueOf(snapShot.child("latitude").getValue().toString());
locLongPass = Double.valueOf(snapShot.child("longitude").getValue().toString());
latlngpass = new LatLng(locLatPass, locLongPass);
MarkerOptions passLocMarkerOptions = new MarkerOptions();
passLocMarkerOptions.position(latlngpass);
passLocMarkerOptions.title(passUsername+ "'s Location");
passLocMarkerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE));
passLocationMarker = mMap.addMarker(passLocMarkerOptions);
} else {
}
}
Toast.makeText(MapsActivity.this, "Passenger Username" + passUsername + " latitude" + locLatPass + "Longitude" + locLongPass, Toast.LENGTH_LONG).show();
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
In jedem Kind gibt es eine Breite und Länge. also jedes Mal, wenn es ein Update gibt, sogar in nur einem Kind, werden alle meine Marker aktualisiert du meinst? –
map.clear() Lösche alle Polylinien und alle Marker. –
Sie können keinen einzelnen Marker aus der Karte entfernen. Sie müssen alle Pins entfernen und alle mit den aktualisierten Eins neu zeichnen. – EEJ