我正在开发一个POI定位器应用程序。我正在解析超过1600个位置的JSON文件。如何有效地将此列表与当前用户位置进行比较并获得最接近的10?
修改 该应用程序不使用服务器,因为我想使用本地JSON文件。
答案 0 :(得分:1)
我通过使用for循环并测量位置和用户位置之间的距离来修复它。
distance = locationA.distanceTo(locationB);
if (distance <= 1000 * 10) //finding all within 10km Radius.{
ADD GEOPOINT HERE
}
答案 1 :(得分:0)
最好是将1600个位置存储在支持地理空间查询的数据库(如mongodb)中。您可以直接查询数据库,以确定与用户的给定纬度和经度最接近的N个位置。
答案 2 :(得分:0)
如果您要通过鸟类观察方法找到距离,您可以查询您的位置并使用位于here的公式检查距离。但是,如果你要将道路(图表)纳入帐户,我担心你需要使用某种寻路服务,如google maps或自己动手。 (据我所知,Android中没有内置机制。)
答案 3 :(得分:0)
我们也在编写这种应用程序,并对MySQL和MongoDB进行了一些性能测试。由于MongoDB是基于文档的,并以json格式存储其数据,因此基于位置的查询(如最靠近用户的餐馆)完成并以极快的速度返回。据我所知,它比MySQL快约10倍。因此,即使您的应用程序当前没有使用no-sql数据库,我强烈建议您使用MongoDB,即使只是用于项目的位置计算。