【问题标题】:Does Geofire give new keys to each user?Geofire 是否为每个用户提供新密钥?
【发布时间】:2017-12-23 16:44:47
【问题描述】:

我想使用 geofire 进行多个位置查询,但不知道如何为每个位置分配单独的键。 geofire 是否会自动为每个用户的位置分配不同的键?

这是我的 Geofire 代码:

if (gps.canGetLocation()) {
 double latitude = gps.getLatitude(); 
 double longitude = gps.getLongitude(); 
 location.setText(latitude + "" + longitude); 
 //add points to database 
 myRef = database.getReference("Location"); 
 GeoFire geoFire = new GeoFire(myRef); 
 geoFire.setLocation("Person", new GeoLocation(latitude,longitude)); 
} else { 
    gps.showSettingsAlert(); 
}

【问题讨论】:

  • 你能告诉我们你用来更新firebase中的密钥的代码吗?
  • if (gps.canGetLocation()) { 双纬度 = gps.getLatitude();双经度 = gps.getLongitude(); location.setText(纬度 + "" + 经度); //向数据库添加点 myRef = database.getReference("Location"); GeoFire geoFire = new GeoFire(myRef); geoFire.setLocation("Person", new GeoLocation(latitude,longitude)); } 其他 { gps.showSettingsAlert(); } @RosárioPereiraFernandes
  • 我只想知道 geofire 是否会自动为每个用户提供新密钥

标签: android firebase firebase-realtime-database geofire google-geolocation


【解决方案1】:

您的问题的答案是否定的。Geofire 不会为您提供每个用户的密钥。您必须使用自己的逻辑来创建密钥,然后将其添加到列表中(我会将此列表称为Locations):

String key = //use your own logic to get this
if (gps.canGetLocation()) {
 double latitude = gps.getLatitude(); 
 double longitude = gps.getLongitude(); 
 location.setText(latitude + "" + longitude); 
 //add points to the list on the database
 myRef = database.getReference("Locations").child(key);
 GeoFire geoFire = new GeoFire(myRef); 
 geoFire.setLocation("Person", new GeoLocation(latitude,longitude)); 
} else { 
    gps.showSettingsAlert(); 
}

如果您使用 Firebase 身份验证,您只需从经过身份验证的用户那里获取 uid 并将其用作您的密钥。

【讨论】:

  • 有没有办法获取数据变化的数据快照?
  • 我不认为我理解你的问题
  • 太棒了!考虑accepting this answer,以便其他人知道它已解决。
  • 你知道如何同时地理查询多个坐标吗?
猜你喜欢
  • 2017-12-14
  • 1970-01-01
  • 1970-01-01
  • 2017-09-14
  • 2017-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多