0
我正在一個應用程序中,我有一個地圖標記是出租車(如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();
}
感謝所有幫助
嗨,謝謝你的回答,我一直在尋找一個變化事件監聽器,但無法解決問題......事情是,他們的「變量」(改變其位置的駕駛室的緯度和經度)來從一個firebase數據庫,這就是爲什麼我不知道如何使他們的條件... –
我一直在思考一個hashmap,但不太清楚如何引入標記。} –