【问题标题】:ANDROID Show closest 10 locations on mapviewANDROID 在地图视图上显示最近的 10 个位置
【发布时间】:2012-10-17 06:26:36
【问题描述】:

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

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

【问题讨论】:

  • 在服务器站点上比较距离。

标签: android json google-maps


【解决方案1】:

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

distance = locationA.distanceTo(locationB); 
if (distance <= 1000 * 10) //finding all within 10km Radius.{
 ADD GEOPOINT HERE 
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 我需要一个全离线方法,要使用 MongoDB 你需要一个服务器。整个应用程序没有使用任何互联网数据,除了指向用户位置。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-24
        • 1970-01-01
        • 2015-05-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多