首页 > 解决方案 > 防止重复的 Google Maps API 标记使用 ValueEventListener Firebase

问题描述

我正在尝试使用 google maps api 在我的应用程序中制作一个标记,并且我从我的 RLTB Firebase 获得了位置。位置总是在变化,这就是我使用 ValueEventListener 的原因。

我试图在 ValueEvent 之外设置标记,但无法正常工作。

getDataNewLoc = FirebaseDatabase.getInstance().getReference().child("Location").child(id_diriku);
        getDataNewLoc.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                Double new_lat = (Double) dataSnapshot.child("l").child("0").getValue();
                Double new_long = (Double) dataSnapshot.child("l").child("1").getValue();

                LatLng diriku = new LatLng(new_lat, new_long);

                mDiriku = mMap.addMarker(new MarkerOptions()
                        .title("Diriku")
                        .position(diriku)
                        .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_forme))
                );
                mDiriku.setTag(0);
                mMap.animateCamera( CameraUpdateFactory.newLatLngZoom(diriku, 19.0f ) );
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

我怎样才能防止这种事情发生?

标签: androidfirebasegoogle-mapsfirebase-realtime-databasegeofire

解决方案


在顶部的 onDataChange 方法中写入以下行

mMap.clear()

推荐阅读