【发布时间】:2012-10-17 06:26:36
【问题描述】:
我正在开发 POI 定位器应用程序。我正在解析一个包含 1600 多个位置的 JSON 文件。如何有效地将此列表与当前用户位置进行比较并获得最接近的 10 个?
编辑 该应用程序没有使用服务器,因为我想使用本地 JSON 文件。
【问题讨论】:
-
在服务器站点上比较距离。
标签: android json google-maps
我正在开发 POI 定位器应用程序。我正在解析一个包含 1600 多个位置的 JSON 文件。如何有效地将此列表与当前用户位置进行比较并获得最接近的 10 个?
编辑 该应用程序没有使用服务器,因为我想使用本地 JSON 文件。
【问题讨论】:
标签: android json google-maps
我通过使用 for 循环并测量位置和用户位置之间的距离来修复它。
distance = locationA.distanceTo(locationB);
if (distance <= 1000 * 10) //finding all within 10km Radius.{
ADD GEOPOINT HERE
}
【讨论】:
如果您可以将 1600 个位置存储在支持地理空间查询的数据库(如 mongodb)中,那就更好了。您可以直接查询数据库以确定与用户给定经纬度最近的N个位置。
【讨论】:
如果您要通过鸟瞰方法查找距离,您只需查询您的位置并使用位于here 的公式检查距离。但是,如果您要考虑道路(图表),恐怕您需要使用某种寻路服务,例如google maps 或自行开发。 (据我所知,Android 中没有内置机制。)
【讨论】:
我们也在编写这种应用程序,并在 MySQL 和 MongoDB 上进行了一些性能测试。因为 MongoDB 是基于文档的,并且以 json 格式存储其数据,所以基于位置的查询(比如离用户最近的餐馆)可以非常快地完成并返回。据我所知,它比 MySQL 快大约 10 倍。因此,即使您的应用程序当前不使用 no-sql 数据库,我也强烈建议您使用 MongoDB,即使只是用于项目的位置计算部分。
【讨论】: