2017-01-12 1 views
0

J'ai une classe POJO à laquelle j'assigne toutes les valeurs de la base de données Firebase à cette classe afin que je puisse retourner la double valeur des coordonnées de latitude et de longitude. Ma méthode pour récupérer ces valeurs renvoie uniquement 0.0 pour toutes les valeurs de latitude et de longitude.Renvoie toutes les valeurs des coordonnées de latitude et de longitude de la base de données Firebase

J'ai ajouté mes codes ci-dessous:

POJO Classe

public class LocationModel { 

private String id; 
private String address; 
private String image; 
private String lat; 
private String lng; 
private String desc; 


public LocationModel() { 
} 

public LocationModel(String id, String address, String image, String lat, String lng, String desc) { 
    this.id = id; 
    this.address = address; 
    this.image = image; 
    this.lat = lat; 
    this.lng = lng; 
    this.desc = desc; 
} 

public String getId() { 
    return id; 
} 

public void setId(String id) { 
    this.id = id; 
} 

public String getAddress() { 
    return address; 
} 

public void setAddress(String address) { 
    this.address = address; 
} 


public String getImage() { 
    return image; 
} 

public void setImage(String image) { 
    this.image = image; 
} 


public String getLat() { 
    return lat; 
} 

public double setLat(String lat) { 
    this.lat = lat; 
    return 0; 
} 

public String getLng() { 
    return lng; 
} 

public double setLng(String lng) { 
    this.lng = lng; 
    return 0; 
} 

Ma méthode pour afficher toutes les coordonnées de latitude et de longitude et affichage comme groupe de marqueurs.

private void displayLocations() { 
    DatabaseReference mapsrefrence=FirebaseDatabase.getInstance().getReference().child("places"); 
    mapsrefrence.child("testlocation").addListenerForSingleValueEvent(

      new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        if(dataSnapshot.hasChildren()) { 
         @SuppressWarnings("unchecked") 

         LatLngBounds bounds; 
         LatLngBounds.Builder builder = new LatLngBounds.Builder(); 

         for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) { 
          // TODO: handle the post 

          LocationModel location = postSnapshot.getValue(LocationModel.class); 
          LocationModel availableLocation = new LocationModel(); 
          double latitude = availableLocation.setLat(location.getLat()); 
          double longitude = availableLocation.setLng(location.getLng()); 
          Log.i(TAG, "lat"+latitude); 

          // Create LatLng for each locations 
          LatLng mLatlng = new LatLng(latitude, longitude); 

          // Make sure the map boundary contains the location 
          builder.include(mLatlng); 
          bounds = builder.build(); 

          // Add a marker for each logged location 
          MarkerOptions mMarkerOption = new MarkerOptions() 
            .position(mLatlng) 
            .title("Clubs") 
            .icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_map)); 
          Marker mMarker = mMap.addMarker(mMarkerOption); 
          markerList.add(mMarker); 

          // Zoom map to the boundary that contains every logged location 
          mMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, 
            MAP_ZOOM_LEVEL)); 
         } 


        } 

        } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { 
        Log.w(TAG, "getUser:onCancelled", databaseError.toException()); 
       } 
      }); 
} 

Répondre

1

Cette section semble erroné:

LocationModel location = postSnapshot.getValue(LocationModel.class); 
LocationModel availableLocation = new LocationModel(); 
double latitude = availableLocation.setLat(location.getLat()); 
double longitude = availableLocation.setLng(location.getLng()); 
Log.i(TAG, "lat"+latitude); 

vous configurez les latitude et longitude des variables à la valeur de retour de setLat() et setLng(), et ces deux méthodes renvoient 0 à chaque fois.

Vous créez également une instance LocationModel supplémentaire inutile.

C'est ce que vous voulez réellement:

LocationModel location = postSnapshot.getValue(LocationModel.class); 
double latitude = location.getLat(); 
double longitude = location.getLng(); 
Log.i(TAG, "lat"+latitude); 
+0

Merci beaucoup qui était la solution: D – jonathan