Android Can';t在Firebase中存储经度和纬度的值
我有我自己的地图,登录后地图会显示出来,然后得到我的坐标(纬度,长)。我将这段代码放在一个覆盖方法onLocationChange(Location-Location)中,这样每当用户走到或移动到任何地方时,lat和long都会被更新。问题是我无法在Firebase中存储这些值Android Can';t在Firebase中存储经度和纬度的值,android,google-maps,Android,Google Maps,我有我自己的地图,登录后地图会显示出来,然后得到我的坐标(纬度,长)。我将这段代码放在一个覆盖方法onLocationChange(Location-Location)中,这样每当用户走到或移动到任何地方时,lat和long都会被更新。问题是我无法在Firebase中存储这些值 try { DatabaseReference myRef = FirebaseDatabase.getInstance().getReference(); Logi
try {
DatabaseReference myRef = FirebaseDatabase.getInstance().getReference();
LoginModel model = new LoginModel();
model.setLatitude(location.getLatitude());
model.setLongitude(location.getLongitude());
myRef.setValue(model, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
if (databaseError != null) {
Toast.makeText(Location.this, "Data could not be saved " + databaseError.getMessage(), Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(Location.this, "Data saved successfully.", Toast.LENGTH_SHORT).show();
}
}
});
Toast.makeText(this, "Latitude :" + location.getLatitude() + " Longitude :" + location.getLongitude() , Toast.LENGTH_SHORT).show();
}catch (Exception e){
Toast.makeText(this, e.toString(), Toast.LENGTH_SHORT).show();
}
数据库(Firebase)
权限被拒绝
啊,你的帖子里没有这些信息:)检查你的数据库规则。转到firebase控制台,选项卡数据库并单击“规则”。现在检查规则是否足以满足您的dev帐户。出于测试目的,将规则设置为“read=true,write=true”,然后再次测试。现在有工作吗?(之后重新设置规则) 您知道如何调用嵌套节点吗? 尝试使用方法
rootReference.updateChildren(Map)代码>用于一次更新多个节点和子节点。地图包含
,其中键
是一个像“User/kfbefafitacomk5hf9/latitude”
这样的集中键,对象
是您想要输入的值(这里是一个用于纬度的浮点)
这种方法的优点是更新节点中的特定键值对,而不更新整个节点。i、 e您可以更新特定用户的邮件值,而无需覆盖经度和纬度
也可以通过调用直接更新值
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("your_root_here_or_empty");
ref.child("childNodeName").child("subChildNodeName").setValue(yourObject, yourListener);
我还强烈建议阅读:
干杯首先,我建议不要在firebase节点中存储任何重要数据,除非您完全熟悉firebase数据库规则。(邮件、手机、密码……)。接下来,日志和祝酒的输出是什么?你确定lat和lon与零不同吗?然后,尝试使用updatemap方法,否则您将始终重新创建完整的键值输入集。@JacksOnF1re我的祝酒词“数据无法保存”的输出权限被拒绝以及纬度和logitudeAh的值,这些信息在您的帖子中丢失:)检查您的数据库规则。转到firebase控制台,选项卡数据库并单击“规则”。现在检查规则是否足以满足您的dev帐户。出于测试目的,将规则设置为“read=true,write=true”,然后再次测试。现在有工作吗?(随后重置规则)@JacksOnF1re谢谢,先生,现在可以了。您知道如何调用嵌套节点吗?就像我数据库里的一样?因为我想在那里存储经度和纬度的值。我试着改变规则先生,我的规则是这样的:{.read:true,.write:true,Name:{.read:true,.write:true,Name:{.read:“auth!=null”,“.write:“auth!=null”},email:{.read”:“auth!=null”、“.write”:“auth!=null”},“pass”:{.read”:“auth!=null”、“.write”:“auth!=null”},“mobile”:{.read”:“auth!=null”,“.write”:“auth!=null”},}
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("your_root_here_or_empty");
ref.child("childNodeName").child("subChildNodeName").setValue(yourObject, yourListener);