Пользовательский маркер Google Map добавляется только один раз - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь создать собственный маркер для своего приложения, в котором я пытаюсь показать только тех пользователей, которые относятся к определенной категории.поэтому я использовал запрос и отфильтровал данные.но когда я пытаюсь пометить их на карте Google и вызвал метод, который возвращает растровое изображение для моего customView, он возвращает только одно растровое изображение, и на карте Google отображается только один маркер. остальные из них невидимы

нижечто я пробовал

    geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {
    @Override
    public void onKeyEntered(String key, GeoLocation location) {
        UIDLocation.put(key,location);
       // mMap.addMarker(new 
    MarkerOptions().position(myPosition).title("Start"));
         marker = mMap.addMarker(new MarkerOptions().position(new 
    LatLng(location.latitude, location.longitude)).title(key));
        markers.put(key, marker);

    }



   View child;
   //MarkeringMap is called when someone click on card which contains the 
   category names
   public void MarkeringMap(String string){ 
   child = getLayoutInflater().inflate(R.layout.category_tags_items, null);
   Query query = 
  FirebaseDatabase.getInstance().getReference().child("WorkMen")
  .orderByChild("subcategory").startAt(string).endAt(string + 
  "\uf8ff").limitToLast(50);
  query.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if(dataSnapshot.exists()) {
                Toast.makeText(getActivity(),"there is 
  something",Toast.LENGTH_SHORT).show();
            }  
            for (DataSnapshot usersnapshot : dataSnapshot.getChildren()) {               
                Users users = usersnapshot.getValue(Users.class);
                usersLists.add(users);
                Toast.makeText(getActivity(),users.getName()+"this is 
     username ",Toast.LENGTH_SHORT).show();
               String keystring =  usersnapshot.getKey();
                for (Map.Entry<String,GeoLocation> entry : 
    UIDLocation.entrySet())
                {
                    Marker marker = markers.get(entry.getKey());
                    if (marker != null) {
                        marker.setVisible(false);                          
                                }   
                               if (keystring.equals(entry.getKey())){
                                   Users user1 = 
       usersnapshot.getValue(Users.class);
                                   String s = user1.getName();
                                   Toast.makeText(getActivity(),s+"this is 
       name  of key",Toast.LENGTH_SHORT).show();
                                   Bitmap b = getMarkerImage(child,s);
                                   Marker marker1 = 
      markers.get(entry.getKey());
                                   if (marker1 != null) {
                                       marker1.setVisible(true);
  //marker.setIcon(BitmapDescriptorFactory.fromResource 
// (R.drawable.locationmarker));

   marker1.setIcon(BitmapDescriptorFactory.fromBitmap(b));                                
                                   }                                      
                    }
                }                  
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
   }





  public Bitmap getMarkerImage(View view,String  name){
    TextView textView1 = 
    (TextView)view.findViewById(R.id.tag_Category_name);
       textView1.setText(name);
       Drawable myDrawable = 
    getResources().getDrawable(R.drawable.default_avatar);
    view.measure(View.MeasureSpec.UNSPECIFIED, 
    View.MeasureSpec.UNSPECIFIED);
    view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
    view.buildDrawingCache();
    Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), 
   view.getMeasuredHeight(),
            Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    canvas.drawColor(Color.WHITE, PorterDuff.Mode.SRC_IN);
    Drawable drawable = view.getBackground();
    if (drawable != null)
        drawable.draw(canvas);
    view.draw(canvas);
    return bitmap;

}
...