我在一个Android项目上工作,该项目另外显示标记,这些标记表示用户在地图上的位置,并且标记表示特定的位置。在我的项目中,我使用google map API,我编写了以下代码,但是每次用户位置更新在数据库中它添加了一个新的标记,而不是移动用户标记,我知道这是因为每次数据更改时我都会创建一个标记,但是我不知道如何解决它,我已经搜索了很多我发现的解决方案只是将一个标记移到最终目的地。
@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) {
}
});
}