【问题标题】:Preventing Duplicated Google Maps API Marker use ValueEventListener Firebase防止重复的 Google Maps API 标记使用 ValueEventListener Firebase
【发布时间】:2019-09-13 06:51:00
【问题描述】:

我正在尝试使用 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) {

            }
        });

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

【问题讨论】:

    标签: android firebase google-maps firebase-realtime-database geofire


    【解决方案1】:

    如果您只想从数据库中获取一次位置信息,请使用addListenerForSingleValueEvent

    所以:

    getDataNewLoc.addListenerForSingleValueEvent(new ValueEventListener() {
      ...
    

    【讨论】:

      【解决方案2】:

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

      mMap.clear()
      

      【讨论】:

        猜你喜欢
        • 2013-08-12
        • 2018-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-13
        • 1970-01-01
        • 2011-10-30
        相关资源
        最近更新 更多