2017-11-18 141 views
1

如何從以下提供的結構中獲取Firebase數據庫中的所有經度和緯度?無法在推送關鍵節點中獲取數據,因爲它隨機生成,我無法捕捉到它。Firebase讀取數據

DEVICE_ID-COORDINATES-> DATE-> PUSHKEY(例如:-KSHJDWFQ) - >現在獲取兒童的長期和短期。 預先感謝您。 請幫助

{ 
    "Driver2" : { 
    "1_353490067508933" : { 
     "coordinates" : { 
     "18-11-2017" : { 
      "-KzDdfZtds7rxwETF4oN" : { 
      "latitude" : "22.5735663", 
      "longitude" : "88.4317749" 
      }, 
      "-KzDl67WgnmKlYADN4sE" : { 
      "latitude" : "22.5736048", 
      "longitude" : "88.4316857" 
      } 
     } 
     } 
    } 
    } 

這是我做了什麼

 final String date = new SimpleDateFormat("dd-MM-yyyy").format(new Date()); 
     fb_ref = new Firebase(Config.FIREBASE_URL_STARTED); 
     fb_ref.child("1_353490067508933").limitToLast(1).addValueEventListener(new com.firebase.client.ValueEventListener() { 

      @Override 
      public void onDataChange(com.firebase.client.DataSnapshot dataSnapshot) { 
       if (dataSnapshot.exists()) { 
        //Driver post = dataSnapshot.getValue(Driver.class); 
        //Log.d("DataNodee", post.getDri_lat()); 
        //Log.d("DataNodee", post.getDri_lng()); 
        // updatemap(Double.parseDouble(post.getDri_lat()), Double.parseDouble(post.getDri_lng())); 
        for (com.firebase.client.DataSnapshot Driver : dataSnapshot.getChildren()) { 
         String childKey = Driver.getKey(); 
         Log.d("childKey", childKey); 
         firebase_url_coordinates = "https://pool-xyz.firebaseio.com/Driver2/1_353490067508933/" + childKey + "/coordinates/" + date + ".json"; 
         Log.d("json_url", firebase_url_coordinates); 
         makeJsonObjectRequest(); 
        } 
        LCUtils.showToastShort(mContext, "Found"); 
       } else { 
        LCUtils.showToastShort(mContext, "Not Found"); 
       } 
      } 

      @Override 
      public void onCancelled(FirebaseError firebaseError) { 
      } 
     }); 
+0

做了答案的工作? –

+0

讓我試試我一定會讓你知道 – avik

+0

它沒有返回任何東西。但代碼工作正常 – avik

回答

1

試試這個:

DatabaseReference database = FirebaseDatabase.getInstance().getReference(); 
    DatabaseReference reference = database.child("Driver2").child("Device_id_here").child("coordinates").child("date_here"); 

reference.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
    for(DataSnapshot data : dataSnapshot.getChildren()){ 
     String latitude=data.child("latitude").getValue().toString(); 
     String longs=data.child("longitude").getValue().toString(); 
     Log.i("latitude", latitude); 
     Log.i("longtitude",longs); 
    } 
    } 
    @Override 
    public void onCancelled(DatabaseError databaseError) { 

    } 
}); 

所以根據這一點:

DEVICE_ID-COORDINATES-> DATE - > PUSHKEY(EX:-KSHJDWFQ) - >現在得到CHILD LATI TUDE和LONGITUDE。

你有id和日期,問題出在​​。因此,您必須在child("date")上進行查詢,然後執行for循環,該循環將在pushkeys內迭代,從而爲您提供longitudelatitude值。