我有POJO类,我将Firebase数据库中的所有值分配给此类,以便我可以返回纬度和经度坐标的double值。我检索这些值的方法仅返回所有纬度和经度值的0.0
。
我在下面添加了我的代码:
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());
}
});
}
答案 0 :(得分: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);
您将latitude
和longitude
变量设置为setLat()
和setLng()
的返回值,并且这两种方法每次都返回0。
您还在创建一个不必要的额外LocationModel实例。
这是你真正想要的:
LocationModel location = postSnapshot.getValue(LocationModel.class);
double latitude = location.getLat();
double longitude = location.getLng();
Log.i(TAG, "lat"+latitude);