ANDROID在mapview上显示最近的10个位置

时间:2012-10-17 06:26:37

标签: android json google-maps

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

修改 该应用程序不使用服务器,因为我想使用本地JSON文件。

4 个答案:

答案 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,即使只是用于项目的位置计算。