android - 防止重复的 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) {
}
});
我怎样才能防止这种事情发生?
解决方案
在顶部的 onDataChange 方法中写入以下行
mMap.clear()
推荐阅读
- cucumber - 有谁知道如何解决这个错误 -SerenityManagedException: 'java.util.Set io.restassured.config.LogConfig.blacklistedHeaders()'
- css - CSS grid-column中auto / span N和span N / span N之间的区别
- javascript - 从视频角度提取帧
- bootstrap-4 - 如何将引导程序 4 升级到引导程序 5?- 纱线
- r - 写为Stata文件时,R中应用的标签不保存
- swift - Swift 表视图和搜索控制器 didSelectRowAt 索引超出范围
- vaadin - 无法使 Vaadin Tree Grid 与文件系统数据提供程序一起使用
- batch-file - 仅使用批处理的 minecraft 1.8.8 json 文件的输出路径
- flutter - Just Audio Flutter Plugin - 如何捕捉歌曲完成事件
- sqlite - 执行多个查询时出现“TypeError: NoneType is not subscriptable”