我正在开发一个 POI 定位器应用程序。我正在解析一个包含 1600 多个位置的 JSON 文件。如何有效地将此列表与当前用户位置进行比较并获得最接近的 10 个?
编辑 该应用程序没有使用服务器,因为我想使用本地 JSON 文件。
我正在开发一个 POI 定位器应用程序。我正在解析一个包含 1600 多个位置的 JSON 文件。如何有效地将此列表与当前用户位置进行比较并获得最接近的 10 个?
编辑 该应用程序没有使用服务器,因为我想使用本地 JSON 文件。
我通过使用 for 循环并测量位置和用户位置之间的距离来修复它。
distance = locationA.distanceTo(locationB);
if (distance <= 1000 * 10) //finding all within 10km Radius.{
ADD GEOPOINT HERE
}
如果您可以将 1600 个位置存储在支持地理空间查询的数据库(如 mongodb)中,那就更好了。您可以直接查询数据库以确定与用户给定纬度和经度最近的 N 个位置。
我们也在编写这种应用程序,并在 MySQL 和 MongoDB 上进行了一些性能测试。因为 MongoDB 是基于文档的,并且以 json 格式存储其数据,所以基于位置的查询(例如离用户最近的餐馆)可以非常快地完成并返回。据我所知,它比 MySQL 快大约 10 倍。因此,即使您的应用程序当前不使用 no-sql 数据库,我强烈建议您使用 MongoDB,即使只是用于项目的位置计算部分。