2016-10-29 2 views
0

Je configure GeoFire pour mon application Android. Au début de la récupération des données de la base de données Firebase, j'obtiens l'exception suivante.Les données GeoFire ont une exception de format invalide

There was an error getting the GeoFire location: DatabaseError: User code called from the Firebase Database runloop threw an exception: W/System.err: java.lang.Throwable: GeoFire data has invalid format: {lon=74.529964, lat=31.4479225}

Apparemment, il récupère les données de la base de données, mais lancer une exception encore :(

J'ai utilisé le code suivant pour récupérer des données:

geoFire.getLocation("test1", new LocationCallback() { 
     @Override 
     public void onLocationResult(String key, GeoLocation location) { 
      if (location != null) { 
       System.out.println(String.format("The location for key %s is [%f,%f]", key, location.latitude, location.longitude)); 
      } else { 
       System.out.println(String.format("There is no location for key %s in GeoFire", key)); 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      System.err.println("There was an error getting the GeoFire location: " + databaseError); 
     } 
    }); 

Comme je suis nouveau firebase, y a-t-il quelque chose qui me manque? This is how my firebase database looks like

+1

Le message d'erreur sonne comme les données dans la base de données est considéré comme invalide par GeoFire. S'il vous plaît ajouter à votre question comment la base de données a été peuplée. –

+0

@MichaelKarcher J'ai joint une capture d'écran de la structure de la base de données. J'ai essayé de récupérer les données pour test1 et test2. Ils donnent tous les deux la même erreur – msavox

Répondre

0

GeoFire ne semble pas utiliser les touches lat et lon, ou Latitude et Longitude comme vous l'avez dans votre exemple, mais un certain codage personnalisé de l'emplacement dans une propriété appelée "g". La méthode correcte pour enregistrer les emplacements à utiliser par GeoFire semble être la méthode setLocation fournie par GeoFire. Voir How to save GeoFire coordinates along with other items in Firebase database? pour une discussion sur la structure de votre base de données.