如何检索距离我的范围 0.5 公里以内的帖子?

2024-01-03

我正在保存用户发布的帖子的坐标。我正在生成一个推送 ID,然后使用它来保存帖子数据和 geofire 坐标。

我只想显示那些在 0.5 公里半径范围内的帖子。我在用GeoFire库相同,但我无法完成任务。

以下是我生成推送 ID 的方法:

itemID = databaseReferenceRequests.push().getKey();

以下是我如何使用它来保存 geofire 坐标以及帖子数据:

geoFire.setLocation(itemID, 
        new GeoLocation(Double.parseDouble(currentLat.getText().toString()), 
        Double.parseDouble(currentLng.getText().toString())));

databaseReferenceRequests.child(itemID).setValue(hRequest);

它的保存方式如下:

问题是,当我尝试仅获取距离我的范围 0.5 公里以内的帖子时,这种情况并没有发生,并且所有帖子(无论是近还是远)都会被检索。

这是我检索它的方法:

public void retrieveHelpRequests() {

            geoQuery = geoFire.queryAtLocation(new GeoLocation(currentLatDouble, currentLngDouble), 0.5);

            geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {
                @Override
                public void onKeyEntered(String key, GeoLocation location) {
                    databaseReference.child("help-requests").addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        Map<String, String> newRequest = (Map<String, String>) dataSnapshot.getValue();
                        imageUID = newRequest.get("imageUIDh");
                        homelessDescription = newRequest.get("homelessDescription");
                        currentLat = newRequest.get("currentLat");
                        currentLng = newRequest.get("currentLng");
                        postedBy = newRequest.get("postedBy");
                        postedAtTime = newRequest.get("postedAtTime");
                        postedOnDate = newRequest.get("postedOnDate");
                        utcFormatDateTime = newRequest.get("utcFormatDateTime");

                        String timeStr = utcFormatDateTime;
                        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                        df.setTimeZone(TimeZone.getTimeZone("UTC"));
                        Date date = null;
                        try {
                            // error on line below
                            date = df.parse(timeStr);
                        } catch (ParseException e) {
                            e.printStackTrace();
                        }
                        df.setTimeZone(TimeZone.getDefault());
                        final String persisted = df.format(date);

                        // Parse string from DB - UTC timezone
                        Date parsed = null;
                        try {
                            parsed = df.parse(persisted);
                        } catch (ParseException e) {
                            e.printStackTrace();
                        }

                        // Now convert to whatever timezone for display purposes
                        final SimpleDateFormat displayFormat = new SimpleDateFormat("h:mm a");
                        displayFormat.setTimeZone(TimeZone.getDefault());

                        formattedTime = displayFormat.format(parsed);

                        prepareDataForRequests();
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {
                        Snackbar snackbar = Snackbar
                                .make(coordinatorLayout, databaseError.getMessage(), Snackbar.LENGTH_LONG);
                        snackbar.setDuration(Snackbar.LENGTH_SHORT);
                        snackbar.show();
//                helpRequestsLoadingDialog.dismiss();
                        progressBarLoadingRequests.setVisibility(View.INVISIBLE);
                    }
                });

                    databaseReference.child("help-requests").addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(final DataSnapshot dataSnapshot) {
    //                adView.loadAd(request);
                            card_ads2.setVisibility(View.VISIBLE);
                            adView2.loadAd(request2);
                            if (snackbar != null) {
                                snackbar.dismiss();
                            }
                            progressBarLoadingRequests.setVisibility(View.INVISIBLE);

                            if (fastItemAdapter.getAdapterItemCount() == 0) {
                                emptyRVtext.setVisibility(View.VISIBLE);
                                emptyRVtexthh.setVisibility(View.VISIBLE);
                                card_ads2.setVisibility(View.INVISIBLE);
                            } else {
                                emptyRVtext.setVisibility(View.INVISIBLE);
                                emptyRVtexthh.setVisibility(View.INVISIBLE);
                            }

    //                progressBarLoadingRequests.setVisibility(View.INVISIBLE);
                        }

                        @Override
                        public void onCancelled(DatabaseError databaseError) {
                            Snackbar snackbar = Snackbar
                                    .make(coordinatorLayout, databaseError.getMessage(), Snackbar.LENGTH_LONG);
                            snackbar.setDuration(Snackbar.LENGTH_SHORT);
                            snackbar.show();
    //                hRequestsLoadingDialog.dismiss();
                            progressBarLoadingRequests.setVisibility(View.INVISIBLE);
                        }
                    });
                }

                @Override
                public void onKeyExited(String key) {

                }

                @Override
                public void onKeyMoved(String key, GeoLocation location) {

                }

                @Override
                public void onGeoQueryReady() {

                }

                @Override
                public void onGeoQueryError(DatabaseError error) {
                    Toast.makeText(getBaseContext(), "Error retriving geoquery", Toast.LENGTH_SHORT).show();
                }
            });

        }

这是错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference

请告诉我如何仅检索用户 0.5 公里范围内的帖子?


还有一种方法可以在 Java 中的 Geo Query 中查找匹配项。 代码与 UI 非常相似。 请查看下面的链接以获取工作代码片段。https://youtu.be/M9d526OyG54 https://youtu.be/M9d526OyG54搜索驱动程序:: 系列教程的第 15 篇。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检索距离我的范围 0.5 公里以内的帖子? 的相关文章

  • 在 ViewPager Fragments 中使用 Master/Detail 模板(下载链接)

    工作代码 https github com lukeallison ViewPagerMasterDetail https github com lukeallison ViewPagerMasterDetail Android 主 详细流
  • Android 30+ 中的视频捕获意图 - 只有所有者才能与待处理项目交互

    我正在尝试在我的应用程序上捕获视频 它可以在 android API 30 以下运行 但不能在 30 以上运行 似乎在 sdk 30 之后 android 不允许完全读取外部存储 作用域存储 我目前遇到这个错误 java lang Ille
  • 找不到 com.google.firebase:firebase-core:9.0.0 [重复]

    这个问题在这里已经有答案了 在遵循有些不一致的指示之后here https firebase google com docs admob android quick start name your project and here http
  • 如何在android中获取Camera2 API的当前曝光

    In android hardware Camera旧的 我使用下面的代码获取当前曝光并获取它Camera Camera Parameters param mCamera getParameters currentExposure para
  • android xamarin 中的 reCaptcha

    我想在 Xamarin android 应用程序中实现验证码 我抓住了这个在 Android 中集成 googles reCaptcha 验证 https www c sharpcorner com article how to integ
  • Adobe 是否为其 PDF 阅读器提供 Android SDK 或 API? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我希望能够在我们的应用程序内的视图中显示本地 PDF 文件 在 Android 4 03 下的平板电脑上运行 目前 我们将 Adob eR
  • Android 中 Kotlin 协程的正确使用方式

    我正在尝试使用异步更新适配器内的列表 我可以看到有太多的样板 这是使用 Kotlin 协程的正确方法吗 这个可以进一步优化吗 fun loadListOfMediaInAsync async CommonPool try Long runn
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 在 SQLite 中搜索时排除 HTML 标签和一些 UNICODE 字符

    更新 4 我已经成功运行了firstchar例如 但现在的问题是使用regex 即使包含头文件 它也无法识别regex操作员 有什么线索可以解决这个问题吗 更新 2 我已经编译了sqlite3我的项目中的库 我现在正在寻找任何人帮助我为我的
  • 如何发布Android .aar源以使Android Studio自动找到它们?

    我正在将库发布到内部 Sonatype Nexus 存储库 Android Studio 有一个功能 可以自动查找通过 gradle 引用的库的正确源 我将 aar 的源代码作为单独的 jar 发布到 Nexus 但 Android Stu
  • Android访问远程SQL数据库

    我可以直接从 Android 程序访问远程 SQL 数据库 在网络服务器上 吗 即简单地打开包含所有必需参数的连接 然后执行 SQL 查询 这是一个私人程序 不对公众开放 仅在指定的手机上可用 因此我不担心第三方获得数据库访问权限 如果是这
  • Android Studio - Windows 7 上的 Android SDK 问题

    我对 Google i o 2013 上发布的最新开发工具 Android Studio 有疑问 我已经成功安装了该程序并且能够正常启动 我可以导入现有项目并对其进行编辑 但是 当我尝试单击 SDK 管理器图标或 AVD 管理器图标时 或者
  • 我的设备突然没有显示在“Android 设备选择器”中

    我正在使用我的三星 Galaxy3 设备来测试过去两个月的应用程序 它运行良好 但从今天早上开始 当我将设备连接到系统时 它突然没有显示在 Android 设备选择器 窗口中 我检查过 USB 调试模式仅在我的设备中处于选中状态 谁能猜出问
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • Android向menuItem添加子菜单,addSubMenu()在哪里?

    我想根据我的参数以编程方式将 OptionsMenu 内的子菜单添加到 menuItem 中 我检查了android sdk中的 MenuItem 没有addSubMenu 方法 尽管你可以找到 hasSubMenu 和 getSubMen
  • Android 套接字和 asynctask

    我即将开始制作一个应该充当 tcp 聊天客户端的应用程序 我一直在阅读和阅读 我得出的结论是最好 如果不需要 将我的套接字和异步任务中的阅读器 问题是我不确定从哪里开始 因为我是 Android 新手 这至少对我来说是一项艰巨的任务 但据我
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 实现滚动选择 ListView 中的项目

    我想使用 ListView 您可以在其中滚动列表来选择一个项目 它应该像一个 Seekbar 但拇指应该是固定的 并且您必须使用该栏来调整它 我面临的一个问题是 我不知道这种小部件是如何调用的 这使得我很难搜索 所以我制作了下面这张图片 以

随机推荐

  • 在函数内调用时使用 png 函数不起作用

    我有一个函数可以执行一些操作 然后根据条件进行绘图 f lt function n rand lt rnorm n no lt seq len n df lt data frame no no rand rand if n gt 10 pn
  • 类型错误:路径必须是字符串或缓冲区 MEAN 堆栈

    我在前端使用 Angular 5 在后端使用 Node 并使用 Mongo 作为数据库 现在我试图将图像保存到数据库 但不断收到此错误 我不知道我是在正面还是背面犯了错误 因为这是我第一次处理文件 我做了我的研究 但它主要指向 Angula
  • 如何覆盖 Apache Flink 中的配置值?

    我正在尝试将 Apache Flink 的指标收集到 Prometheus 中 Flink 文档说我需要将以下行添加到我的 flink conf yaml 中 metrics reporter promgateway class org a
  • 如何在 datagridview 中动态创建列并为其及其行分配标题?

    我正在使用 datagridview 但没有使用任何数据源 我想动态地给它分配值 创建我自己选择的列数和行数并命名它们 另外 我想将图像添加到单元格而不是数据 至于更改列文本 我们可以使用 grid Columns 0 HeaderText
  • 为什么“std::vector”的大小是 16 字节?

    我使用 memcpy 将 std vectors 的内容复制到原始数组 对于 int float double 等数据类型 它运行良好 当我开始复制布尔向量时 我遇到了一个问题 即我得到了奇怪的值 首先 我开始为浮点向量进行测试输出 std
  • EF4:LINQ 2 实体查询在 C# 中有效,但在 VB 中无效

    编辑 我在下面留下了原始问题 并提供了更多上下文和代码来重现问题 下面的简短版本包含了问题的本质 简短版本 下面的查询抛出 System NotSupportedException 无法转换类型 System Linq IOrderedQu
  • VBA 使用 format() 或 CDate() 将字符串转换为日期时出现问题

    如果以前曾问过这个问题 请为我指出正确的方向 我似乎无法用我的谷歌搜索技能找到任何有用的东西 我有以下代码 它读取这样的字符串 停电开始日期 05 10 11 23 59 EST并提取日期信息 即 05 10 11 23 59 sStart
  • JQuery 类选择器在removeClass后仍然触发

    我正在创建一个小型投票机制 通过 AJAX 发送快速数据库时间戳 一系列带有 投票 类别的按钮是投票的触发器 而下面的文本显示该特定项目有多少 投票 从单击事件运行 AJAX 方法后 我删除了 投票 类 以便该项目中不能有多个投票 然而我的
  • 为什么 clang 在 Scons 下不显示颜色输出?

    使用 Scons 构建时 我可以将其配置为使用 clang 如下所示 env CXX clang 但是 它似乎没有保留 clang 输出的颜色信息 我怎样才能让 scons 保留颜色 根据铿锵文档 http clang llvm org d
  • 使用 g++ 编译 C++ 时,“隐藏构造函数”警告是什么意思?

    使用以下代码 include
  • 如何打印 .net 中的文本文件

    如何在 vb net 中打印 txt 文件 希望不使用任何第三方 See 如何在vb net中打印批处理文件 https stackoverflow com questions 4435644 how to print batch file
  • Git 中的插入和删除是什么?

    当我运行 git 命令时git commit or git log shortstat部分输出如下所示 2 files changed 3 insertions 11 deletions 一个的含义是什么插入 or a deletion 它
  • Maven 为同一个项目生成两个不同的 WAR 文件

    我有一个 Maven Web 服务项目 由两个不同的服务类 testClass1 和 testClass2 组成 我想要为同一项目的两个类创建两个不同的 WAR 文件 目前我正在为这两个服务生成单个 WAR 文件 如何为同一个项目生成两个不
  • 用于 Java 的非阻塞 io Web 服务器/框架

    有谁知道任何用于java的node js风格的网络服务器框架 我意识到 在处理 Web 请求时具有非阻塞回调行为需要 Web 服务器级别的深入支持 我对 Node js 感兴趣 但是当我有一个最终保存数据的 Web 服务器时 我想利用 Ja
  • sed one-liner - 查找关键字周围的分隔符对

    我通常使用大型 XML 文件 并且通常通过以下方式进行字数统计 grep确认某些统计数据 例如 我想确保至少有五个实例widget通过以下方式在单个 xml 文件中 cat test xml grep ic widget 此外 我只是希望能
  • 你能通过地址比较对象是否相等吗?

    我有一个函数可以按每个属性比较对象以查看它们是否相同 但我只是想知道 通过地址比较对象而不是检查它们是否是完全相同的对象会更好吗 编辑 请注意 如果您希望函数正常工作 则不能将值 对象 传递给函数 您需要传递 可能是常量 引用或指针 如果您
  • Android 货币符号排序

    我正在使用非英语语言环境的设备 英语货币的格式如下 1 如果我有英语语言环境 我会得到欧元货币 例如 1 Using format setCurrency Currency getInstance currency return forma
  • 角度 2 生产构建后出现意外标记 <

    在构建我的 Angular 2 应用程序之后ng build prod我复制了dist我的 node js 项目中的文件夹并将基本标签修改为 现在 当我尝试在浏览器中打开时 我收到以下错误 polyfills aa13f03 bundle
  • 导入环境OpenAI Gym出错

    我正在尝试运行 OpenAI Gym 环境 但出现以下错误 import gym env gym make Breakout v0 ERROR Library Frameworks Python framework Versions 3 8
  • 如何检索距离我的范围 0.5 公里以内的帖子?

    我正在保存用户发布的帖子的坐标 我正在生成一个推送 ID 然后使用它来保存帖子数据和 geofire 坐标 我只想显示那些在 0 5 公里半径范围内的帖子 我在用GeoFire库相同 但我无法完成任务 以下是我生成推送 ID 的方法 ite