我正在开发一款应用程序,其中我有一个标记为驾驶室的地图(如UBER出租车),我正在使用firebase,而我需要擦除标记(firebase上的孩子)这已经改变了它的位置,如果其他人没有改变,我需要将它们保留在地图中...我已经开发了一个功能但是它会从地图中删除每一个标记,而不仅仅是一个(驾驶室)已“移动”......
private void loadLocationsFromCloud() {
Bundle extras = getIntent().getExtras();
String company= extras.getString("cabs-company").toString();
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("company");
Query groupQuery = myRef.child(company);
groupQuery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
//nothing to do here.
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
Log.d(TAG, "onDataChange");
eraseMarkers();
LastLocation item = dataSnapshot.getValue(LastLocation.class);
LatLng newLatLng = new LatLng(item.getmLatitud(),
item.getmLongitud());
Integer cabId = new Integer(item.getcabId());
drawMarker(newLatLng, cabId);
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
Log.d(TAG, "onDataChange");
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
//绘制标记的方法
private void drawMarker(LatLng pos, final Integer cabId) {
final String id = cabId.toString();
final String cabId = "u" + id;
Bundle bundle = getIntent().getExtras();
final String company = bundle.getString("company");
final MarkerOptions markerOptions = new MarkerOptions().position(pos);
markerOptions.position(pos);
markerOptions.icon(BitmapDescriptorFactory.fromResource(R.mipmap.rutixxx));
markerOptions.snippet("Cab #: " + num);
markerOptions.title(company);
if (mMap != null) {
marker = mMap.addMarker(markerOptions);
markersToClear.add(marker);
}
}
//擦除标记的方法。
private void eraseMarkers() {
for (Marker marker : markersToClear) {
marker.remove();
}
markersToClear.clear();
}
感谢任何帮助
答案 0 :(得分:0)
在方法=MINUS(A1,B1)
中,您将所有标记添加到drawMarker
中,当您调用函数markersToClear
时,所有标记都将被删除。
我认为您应该在标记更改时将标记添加到markersToClear 。也许在android中有eraseMarkers
,尝试使用它。