首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android GeoFire onKeyEntered未触发

Android GeoFire onKeyEntered未触发
EN

Stack Overflow用户
提问于 2017-05-06 18:18:26
回答 1查看 993关注 0票数 0

android从不为匹配queryLocation而执行。但是执行onGeoQueryReady方法。

因此,当我单击菜单栏时,将执行addGeoQueryEventListener,执行onGeoQueryReady方法。但是从来没有执行过onKeyEntered方法。正如您在附件中所看到的,我的位置与顶层节点位于同一个节点中。我还在DB引用中包含了子路径"xxx_location“。下面是我的API版本。

代码语言:javascript
复制
Geofire 2.1.1'
firebase-core:9.0.2'

代码:

代码语言:javascript
复制
 ///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);
          }
      });

  }

EN

回答 1

Stack Overflow用户

发布于 2017-05-06 22:07:44

您的JSON缺少g键,它是Geofire用于查询的geohashes。没有g键,它就不会在任何查询中找到任何键。

有关如何使用Geofire在数据库中设置位置的示例,请参阅文档

GeoFire.setLocation(“消防基地-总部”,新GeoLocation(37.7853889,-122.4056973));

如果您想知道setLocation做什么,请查看它的代码:https://github.com/firebase/geofire-java/blob/8385c3148f816807ea3e1873c5e3772d76856057/src/main/java/com/firebase/geofire/GeoFire.java#L162

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43823882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档