在不保存坐标的情况下创建基于位置的应用程序

Create location-based app without saving coordinate

我开发了一个基于位置的应用程序,其运行方式如下:

  1. 我使用 Geofire 如下保存用户的位置(在 firebase 数据库中保存经纬度坐标):

    if (UID != null) {
    geoFire.setLocation( UID, new GeoLocation( Lat_Coordinate, Lon_Coordinate ), (key, error) -> {
        if (error != null) {
    
        } else {
    
        }
    } );
    }
    
  2. 我执行 Geofire 查询是为了在用户决定的特定距离内找到用户:

     geoFire.getLocation( PersonID, new com.firebase.geofire.LocationCallback() {
         @Override
         public void onLocationResult(String key, GeoLocation location) {
             if (location != null) {
                 float distance = CalculateDistance( Lat, Lon, location.latitude, location.longitude );
                 if (!PersonID.equals( UID )) {
                     if (distance <= Radius) {
                         distance = distance / 1000;
                         MapPerson mapPerson = new MapPerson( PersonID, String.valueOf( Math.round( distance ) ), itemID );
                         personList.add( mapPerson );
    
                         Collections.sort( personList, (o1, o2) -> o2.getPersonDistance().compareTo( o1.getPersonDistance() ) );
                         Collections.reverse( personList );
                         mapPersonAdapter.notifyDataSetChanged();
    
                         rv_RecyclerView.setVisibility( View.VISIBLE );
    
                     }
                 }
             }
         }
    

基本上是寻找其他人的位置并计算相对于我的距离。

现在,一切正常。

但是,由于隐私限制,我想尽可能少地保存有关用户的信息。

是否有任何技术可以执行此类计算或推荐的算法来找到我周围一定半径范围内的用户,而无需将他们的位置保存到我的 firebase 数据库中?

谢谢

Is there any technique to perform such calculations or recommended algorithm to find users around me in some radius without saving their location into my firebase database?

不,没有。在不知道他们的实际位置的情况下,您无法知道用户是否在附近。没有特殊的技术可以检测用户是否在特定半径内。实现这一点的唯一方法是将位置存储在数据库中,并使用像 Geofire 这样的库来执行所需的地理查询。解决方法可能是,仅当用户处于活动状态时才存储用户的位置,否则不要。