我正在使用Firebase实时数据库,我希望有类似的东西,
位置//参考名称 -------> uid //用户ID我将使用我的SQL数据库中的用户uid而不是firbase push() -------> latitudeLocation -------> longitudeLocation
我现在用它来更新纬度和经度它工作正常,但我有很多用户,这只改变了一行,我想首先检查是否有冷却在那里然后只是保持更新纬度和经度为那个用户,如果没有,那么用我将提供的uid添加新用户,
db = new SQLiteHandler(getActivity().getApplicationContext());
HashMap<String, String> user = db.getProviderDetails();
String uid = user.get("uid"); // here i get the uid from sqllite
googleMap.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() {
@Override
public void onMyLocationChange(Location location) {
latitudeLocation = location.getLatitude();
longitudeLocation = location.getLongitude();
database = FirebaseDatabase.getInstance();
myRef = database.getReference("Location");
myRef.setValue(latitudeLocation+","+longitudeLocation);
}
});
第二件事是在地图上显示用户位置时我现在正在使用此功能,这也适用于单个用户,但我希望获得我们在上面添加它们的所有用户(eash用户有不同的uid)并添加到地图< / p>
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
if (ContextCompat.checkSelfPermission(getContext(), android.Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
mMap.setMyLocationEnabled(true);
} else {
if (ContextCompat.checkSelfPermission(getContext(), android.Manifest.permission.ACCESS_COARSE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
mMap.setMyLocationEnabled(true);
} else {
}
}
mMap.getUiSettings().setCompassEnabled(false);
mMap.getUiSettings().setIndoorLevelPickerEnabled(false);
mMap.getUiSettings().setMapToolbarEnabled(false);
mMap.getUiSettings().setRotateGesturesEnabled(false);
mMap.getUiSettings().setZoomControlsEnabled(false);
LatLng p1 = new LatLng(latitudeLocation, longitudeLocation);
database = FirebaseDatabase.getInstance();
myRef = database.getReference("Location");
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
value = dataSnapshot.getValue(String.class);
String [] separated = value.split(",");
String latPos = separated[0].trim();
String longiPos = separated[1].trim();
Double dlat = Double.parseDouble(latPos);
Double dlong = Double.parseDouble(longiPos);
drivers = new LatLng(dlat,dlong);
mMap.clear();
mMap.addMarker(new MarkerOptions().position(drivers).icon(BitmapDescriptorFactory.fromResource(R.drawable.collection_d)));
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
如果可以编辑我的代码以显示新方法。
感谢。