Le géofire android onKeyEntered n'est jamais exécuté pour la requête queryLocation correspondante. Mais la méthode onGeoQueryReady est exécutée. Par conséquent, lorsque je clique sur le bottombar du menu, l'addGeoQueryEventListener est exécuté et la méthode onGeoQueryReady est exécutée. Mais la méthode onKeyEntered n'est jamais exécutée. Comme vous pouvez le voir dans la pièce jointe, j'ai l'emplacement dans le même nœud que le nœud de niveau supérieur. J'ai également inclus le chemin de l'enfant "xxx_location" dans la référence DB. ci-dessous sont ma version de l'API.Android GeoFire onKeyEntrer non déclenché
Geofire 2.1.1'
firebase-core:9.0.2'
code:
///geofire connection
DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
DatabaseReference refLowLevel = ref.child("xxxxx_location");
if (refLowLevel!=null) {
GeoFire geoFire = new GeoFire(refLowLevel);
// creates a new query around [37.7832, -122.4056] with a radius of 0.6 kilometers
geoQuery = geoFire.queryAtLocation(new GeoLocation(37.12314,-122.49182),1.80);
Log.i(TAG, "query-------->"+geoQuery);
markers = new HashMap<String, Marker>();
geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {
@Override
public void onKeyEntered(String key, GeoLocation location) {
Log.i(TAG, "inside painter onkeynetered-------->");
//Marker marker = map.addMarker(new MarkerOptions().position(new LatLng(location.latitude, location.longitude)));
//markers.put(key, marker);
}
@Override
public void onKeyExited(String key) {
Log.i(TAG, "inside painter onkeyexited-------->");
}
@Override
public void onKeyMoved(String key, GeoLocation location) {
System.out.println(String.format("Key %s moved within the search area to [%f,%f]", key, location.latitude, location.longitude));
}
@Override
public void onGeoQueryReady() {
Log.i(TAG, "inside painter onqueryready-------->");
}
@Override
public void onGeoQueryError(DatabaseError error) {
System.err.println("There was an error with this query: " + error);
}
});
}
Si vous n'obtenez aucune clé avant l'appel de 'onGeoQueryReady', cela signifie qu'aucune clé ne correspond à votre requête. –
Merci. Comme vous pouvez le voir dans la capture d'écran, j'ai trois nœuds avec un nom comme ID avec 123 avec trois emplacements différents et ces ID sont à l'intérieur du nœud parallèle ci-dessous encore unkeyentered pas exécuté. J'essaie depuis de nombreuses semaines et pas de chance – user1439582
Ouais, ça ne ressemble pas à un endroit qui a été écrit avec Geofire. Il vous manque les clés 'g', qui sont les géohases que Geofire utilise pour interroger. –