2017-08-30 6 views
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); 
    } 

} 

// METを描画する方法を "移動" している(CAB)マーカーを消すためにうなずきます。

private void eraseMarkers() { 

    for (Marker marker : markersToClear) { 
     marker.remove(); 
    } 
    markersToClear.clear(); 
} 

あなたが機能eraseMarkersを呼び出すときの方法drawMarkerで任意のヘルプ

答えて

0

に感謝、あなたはすべてのマーカーmarkersToClearにを追加、ofcourseのすべてのマーカーがerrasedされるだろう。

マーカが変更されたときに、マーカをマーカーに追加するだけでよいと思います。おそらくアンドロイドにchange event listenerがあります。それを使用してみてください。

+0

こんにちは、私は変更イベントリスナーを探していましたが、問題を解決できませんでした...事は、その "変数"(その位置を変更しているキャブの緯度、経度)が来ることですfirebaseデータベースからのもので、それで私はそれらと条件を作る方法を知らないのです... –

+0

私はハッシュマップについて考えてきましたが、マーカーをどのように紹介するのかはかなりはっきりしていません。} –

関連する問題