动画多个标记

时间:2019-04-07 17:40:16

标签: java android firebase google-maps marker

我在一个Android项目上工作,该项目另外显示标记,这些标记表示用户在地图上的位置,并且标记表示特定的位置。在我的项目中,我使用google map API,我编写了以下代码,但是每次用户位置更新在数据库中它添加了一个新的标记,而不是移动用户标记,我知道这是因为每次数据更改时我都会创建一个标记,但是我不知道如何解决它,我已经搜索了很多我发现的解决方案只是将一个标记移到最终目的地。

 @Override
    public void onMapReady(GoogleMap googleMap) {
        map = googleMap;
// to display current user location 
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
                == PackageManager.PERMISSION_GRANTED) {
            map.setMyLocationEnabled(true);
        } else {
// Show rationale and request permission.
        }

// to show the place marker
     LatLng location = new LatLng(lat1, lon1);
    map.addMarker(new MarkerOptions().position(location).title(title).snippet(date).icon(BitmapDescriptorFactory.fromResource(R.drawable.lostflag)));
        map.moveCamera(CameraUpdateFactory.newLatLng(location));

        // when users location update in DB 

rootRef=FirebaseDatabase.getInstance().getReference("volunteer/"+Pid);
        rootRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                for (DataSnapshot propertySnapshot :dataSnapshot.getChildren()) {
                       if(propertySnapshot.getKey()!=userID){
                            Volunteer volunteer1 = propertySnapshot.getValue(Volunteer.class);
                           boolean statue = volunteer1.getState();

                        if (statue) {// if it volunteer

                           double latitude = volunteer1.getLatitude();
                           double longitude = volunteer1.getLongitude();
                           LatLng location1 = new LatLng(latitude, longitude);

map.addMarker(new MarkerOptions().position(location1).icon(BitmapDescriptorFactory.fromResource(R.drawable.volunteer)));

                        }
                        } 


                    }
                }



            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

    }

0 个答案:

没有答案