firebaseデータベースからデータを取得する際にこの問題が発生しました。私は、以下のアンドロイドコードを使用してデータベースに以下の詳細をプッシュしました。FirebaseからLatログデータを取得し、マーカとしてマップに貼り付けます
scanString = intent.getStringArrayListExtra("beaconList");
nameList = intent.getStringArrayListExtra("nameList");
addressList = intent.getStringArrayListExtra("addressList");
RssiList = intent.getIntegerArrayListExtra("RssiList");
for (int i=0; i < scanString.size(); i++) {
addBeacon.name = nameList.get(i);
addBeacon.address = addressList.get(i);
addBeacon.Rssi = RssiList.get(i);
addBeacon.latitude = mLastKnownLocation.getLatitude();
addBeacon.longitude = mLastKnownLocation.getLongitude();
databaseReference.child("foo").push().setValue(addBeacon);
と次のような構造があります。
私はこの緯度&をデータベースから取得し、これらの座標を使ってマーカーにマーカーを配置したいと考えています。
私はそれに次のコードを使用しています。
scanString.add("11");
databaseReference = FirebaseDatabase.getInstance().getReference().child("foo").child("-KltK9gp7g5h1YpqaCmW");
//databaseReference.addValueEventListener(new ValueEventListener() {
//databaseReference.addChildEventListener(new ChildEventListener() {
ChildEventListener childEventListener = new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName) {
Log.d("Child Event,longitude", dataSnapshot.getKey());
addBeacon = dataSnapshot.getValue(beacon.class);
scanString.add("add beacon retrieved");
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String previousChildName) {
Log.d("Child Event,longitude","onChildChanged:"+ dataSnapshot.getKey());
addBeacon = dataSnapshot.getValue(beacon.class);
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) { }
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) { }
@Override
public void onCancelled(DatabaseError databaseError) {}
};
databaseReference.addChildEventListener(childEventListener);
databaseReference.push().setValue(scanString);
}
誰かが助けることができれば、本当に素晴らしいことになります。前もって感謝します !!
主な問題は、Firebaseデータベースとアプリケーション間の同期です。子供が追加されたときにリアルタイムで値を取得したいが、それは起こっていない。値は多くの遅延で更新されるため、地図上にマーカーをリアルタイムで配置することはできません。 –