2017-01-12 6 views
0

私はFirebase Databaseのすべての値をこのクラスに割り当てて緯度と経度座標の倍値を返すことができるPOJOクラスを持っています。これらの値を取得する私の方法は、緯度と経度のすべての値に対して0.0を返します。Firebaseデータベースからすべての緯度と経度座標を返します

Iは、以下の私のコードを追加しました:マーカーのクラスタとして全て緯度経度座標と表示を表示する

POJOクラス

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; 
} 

マイ方法。

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()); 
       } 
      }); 
} 

答えて

1

このセクションでは、間違ったになります。

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); 

あなたがsetLat()setLng()の戻り値にlatitudelongitude変数を設定していて、これらのメソッドの両方が毎回0を返します。

不要な追加のLocationModelインスタンスも作成しています。

これは、あなたが実際に何をしたいです:

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

はあなたの解決策だったことそんなにありがとう:D – jonathan

関連する問題