1

我正在开发一个 POI 定位器应用程序。我正在解析一个包含 1600 多个位置的 JSON 文件。如何有效地将此列表与当前用户位置进行比较并获得最接近的 10 个?

编辑 该应用程序没有使用服务器,因为我想使用本地 JSON 文件。

4

4 回答 4

1

我通过使用 for 循环并测量位置和用户位置之间的距离来修复它。

distance = locationA.distanceTo(locationB); 
if (distance <= 1000 * 10) //finding all within 10km Radius.{
 ADD GEOPOINT HERE 
}
于 2012-10-19T05:48:01.757 回答
0

如果您可以将 1600 个位置存储在支持地理空间查询的数据库(如 mongodb)中,那就更好了。您可以直接查询数据库以确定与用户给定纬度和经度最近的 N 个位置。

于 2012-10-17T06:35:04.213 回答
0

我们也在编写这种应用程序,并在 MySQL 和 MongoDB 上进行了一些性能测试。因为 MongoDB 是基于文档的,并且以 json 格式存储其数据,所以基于位置的查询(例如离用户最近的餐馆)可以非常快地完成并返回。据我所知,它比 MySQL 快大约 10 倍。因此,即使您的应用程序当前不使用 no-sql 数据库,我强烈建议您使用 MongoDB,即使只是用于项目的位置计算部分。

于 2012-10-17T06:54:07.907 回答
0

如果您要通过鸟瞰方法查找距离,您只需查询您的位置并使用位于此处的公式检查距离。但是,如果您要考虑道路(图表),恐怕您需要使用某种寻路服务,例如谷歌地图或自己滚动。(据我所知,Android 中没有内置机制。)

于 2012-10-17T06:37:59.190 回答