android geofire onKeyEntered는 queryLocation과 일치하도록 실행되지 않습니다. 그러나 onGeoQueryReady 메소드가 실행됩니다.Android GeoFire onKeyEntered가 trigged되지 않음
그래서 메뉴 바텀 바를 클릭하면 addGeoQueryEventListener가 실행되고 onGeoQueryReady 메서드가 실행됩니다. 그러나 onKeyEntered 메소드는 절대로 실행되지 않습니다. 첨부 파일에서 볼 수 있듯이 최상위 노드와 동일한 노드에 위치합니다. 또한 DB 참조에 하위 경로 "xxx_location"을 포함 시켰습니다. 아래는 내 API 버전입니다.
Geofire 2.1.1'
firebase-core:9.0.2'
코드 :
///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);
}
});
}
'onGeoQueryReady'가 호출되기 전에 키를 얻지 못하면 쿼리에 맞는 키가 없다는 것을 의미합니다. –
감사합니다. 스크린 샷에서 볼 수 있듯이, 3 개의 다른 ID를 가진 123 개의 이름이있는 노드가 있으며이 ID는 병렬 노드 아래에 있으며 여전히 실행되지 않고 계속 실행됩니다. 나는 수 주일 동안 노력했지만 행운이 없었습니다. – user1439582
그래, Geofire로 작성된 곳이 아닌 것 같습니다. Geofire가 쿼리하는 데 사용하는 geohases 인 'g'키가 없습니다. –