擦除特定标记

时间:2017-08-30 02:26:01

标签: java android google-maps google-maps-markers

我正在开发一款应用程序,其中我有一个标记为驾驶室的地图(如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();
}

感谢任何帮助

1 个答案:

答案 0 :(得分:0)

在方法=MINUS(A1,B1)中,您将所有标记添加到drawMarker中,当您调用函数markersToClear时,所有标记都将被删除。

我认为您应该在标记更改时将标记添加到markersToClear 。也许在android中有eraseMarkers,尝试使用它。