如何在onMapReady中添加新标记时删除先前的标记。有人能帮我解决这个问题吗?这是我的代码…
@Override
public void onMapReady(@NonNull GoogleMap googleMap) {
mMap = googleMap;
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("Test");
ValueEventListener listener = databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
Double f_latitude = snapshot.child("f_latitude").getValue(Double.class);
Double f_longitude = snapshot.child("f_longitude").getValue(Double.class);
LatLng location = new LatLng(f_latitude, f_longitude);
mMap.addMarker(new MarkerOptions().position(location).title("ELE00001").icon(bitmapDescriptorFactory(getApplicationContext(),R.drawable.ele_marker)));
mMap.moveCamera(CameraUpdateFactory.newLatLng(location));
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
mMap = googleMap;
mMap.getUiSettings().setZoomControlsEnabled(true);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},LOCATION_REQUEST);
return;
}
}
如何在onMapReady中添加新标记时删除先前的标记。有人能帮我解决这个问题吗?
有两种方法。你可以清除所有的地图,或者在添加之前删除当前的标记。
要清除整个地图,可以使用下面的代码:
mMap.clear();
要只删除前一个标记,您应该定义一个存储当前标记的变量。首先,在类中定义一个Marker
对象。
Marker currentMarker;
然后您需要确保,如果先前的标记已经存在,则需要在添加新标记之前删除它,并使用新标记更新变量。
@Override
public void onMapReady(@NonNull GoogleMap googleMap) {
mMap = googleMap;
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("Test");
ValueEventListener listener = databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (currentMarker != null) {
currentMarker.remove();
}
Double f_latitude = snapshot.child("f_latitude").getValue(Double.class);
Double f_longitude = snapshot.child("f_longitude").getValue(Double.class);
LatLng location = new LatLng(f_latitude, f_longitude);
currentMarker = mMap.addMarker(new MarkerOptions().position(location).title("ELE00001").icon(bitmapDescriptorFactory(getApplicationContext(), R.drawable.ele_marker)));
mMap.moveCamera(CameraUpdateFactory.newLatLng(location));
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
mMap = googleMap;
mMap.getUiSettings().setZoomControlsEnabled(true);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, LOCATION_REQUEST);
return;
}
}
此代码将删除前面的标记,如果它存在,
if (currentMarker != null) {
currentMarker.remove();
}
这段代码将帮助您存储新添加的标记。
currentMarker = mMap.addMarker(new MarkerOptions().position(location).title("ELE00001").icon(bitmapDescriptorFactory(getApplicationContext(), R.drawable.ele_marker)));