【发布时间】:2018-04-12 02:47:25
【问题描述】:
我正在开发一个地图应用程序。
此应用程序具有按钮,如果按下这些按钮,则会在地图上添加一个标记并添加到 Firebase 中的 LatLang。
我的 Firebase 结构如下:
这是我的应用程序屏幕:
拖动标记时我遇到了困难。我可以获取 LatLang,但无法将其发送到 Firebase,而且如果我在 Firebase 中更新某些数据,它不会在 App 中更新,只有在我关闭并再次打开 App 时才会更新。
我该怎么做?
@Override
public void onMarkerDragEnd(Marker marker) {
LatLng latLng = marker.getPosition();
String id = marker.getId();
Toast.makeText(getActivity(), ""+latLng+id, Toast.LENGTH_LONG).show();
Marker previousMarker = mMarkerMap.get(marker.getId());
if (previousMarker != null) {
marker.remove();
mMap.addMarker(new MarkerOptions().draggable(true).position(latLng).title("Buraco").icon(BitmapDescriptorFactory.fromResource(R.drawable.road)));
} else {
marker.remove();
mDatabase.push().setValue(latLng);
}
}
@Override
public void onMarkerDragStart(Marker marker) {
LatLng latLng = marker.getPosition();
}
@Override
public void onMarkerDrag(Marker marker) {
// TODO Auto-generated method stub
LatLng latLng = marker.getPosition();
marker.setPosition(latLng);
}
});
GPS();
mDatabase = FirebaseDatabase.getInstance().getReference().child("Locais").child("Buraco");
mDatabase.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String prevChildKey) {
LatLng location = new LatLng(
dataSnapshot.child("latitude").getValue(double.class),
dataSnapshot.child("longitude").getValue(double.class)
);
mMap.addMarker(new MarkerOptions().draggable(true).position(location).title("Buraco").icon(BitmapDescriptorFactory.fromResource(R.drawable.road)));
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String prevChildKey) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String prevChildKey) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
【问题讨论】:
标签: java android google-maps firebase firebase-realtime-database