java - 高效存储和检索许多位置点以在 mapoverlay 中显示

标签 java android sqlite indexing

目标

记录 Android 手机当前位置的信号强度。然后将它们全部显示在 map 上。

正在存储什么

在 android 上的 sqlite 数据库中以 形式记录。我使用 ORMLite 作为抽象层来存储和检索数据。

在我正在制作(记录)的应用程序中,它会创建很多点。事实上,我必须每 500 毫秒创建一个日志条目

到目前为止我做了什么

我查询具有范围之间的经度和纬度的日志点。但这确实是低效的 O(n) (如果我错了请纠正我)

在我正在制作(记录)的应用程序中,它将

我的问题

我应该使用什么索引方法。还是我必须采取其他方法?

最佳答案

我做过类似的事情。我每 5 分钟获取一次用户位置,但是当我获取位置时,我会每 500 毫秒捕获一次位置,持续 1 分钟(我这样做是为了尝试获取最准确的位置)。这些位置存储在内存列表中。一分钟后,我按准确率递减对它们进行排序,选择列表中的第一个并丢弃其余的。然后我从我的 SQLLite 数据库中检索了最后一个位置并比较了这两个位置——如果新位置与以前的位置相同(在 50 米的公差范围内),我丢弃了新位置;如果不是,则它已提交给数据库。 我这样做是为了确保我得到最准确的读数,并确保我没有数百个位置要绘制 map ,所有位置都在彼此之上。也许您可以在位置和/或信号强度上实现类似的“过滤器”。

关于java - 高效存储和检索许多位置点以在 mapoverlay 中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12076598/

相关文章:

android - "table or subquery expected, got "Android Room 错误

SQL 表不遵守其唯一约束

java测试: accelerate time to test timeouts?

java - 抽屉导航中 webview 的 findViewById 问题

java - Weblogic 12c 中 Web 应用程序关闭/启动后无法解析数据源 JNDI

android - Android 的 CursorAdapter 是否在后台线程中运行?

java - Android AlertDialog 设置项目对齐中心

sqlite:使用来自其他 2 个表列的 cat 列更新表列

android - 自动填充数据库。(Android/新手)

java - 用Java实现LZ78算法