根据超过2000个地点的位置,在地图片段中显示附近的标记?

时间:2013-10-01 17:16:43

标签: android

我有一个超过2000个位置的本地数据库,我试图根据用户位置搜索。我只想在用户附近的Map Fragment中显示一些标记,但到目前为止还无法找到方法。

目前数据库采用csv文件的形式,因此我可以轻松地将其更改为其他类型。但是我等着这样做,直到我找到一个可以根据用户周围的半径搜索坐标的实用程序。有人有什么建议吗?

2 个答案:

答案 0 :(得分:0)

您可以为用户周围的某个框定义LatLngBounds对象,然后使用bounds.contains(LatLng)来确定您的哪个位置在该半径内。我已经将此方法用于与您的大小相同的集合,并且它足够快以达到我们的目的。你将搜索一个矩形,而不是一个半径,但由于地图是一个矩形,也许这更有意义吗?

答案 1 :(得分:0)

这是一个棘手的话题,解决方案并不简单。我简要列出了我使用过的步骤,这对我的案例中的超过10万资产起作用。

  1. 假设您已经拥有获取当前位置的逻辑,并且可以作为myLocation调用。
  2. 在sqlite文件中添加您的位置数据,并将位置坐标视为浮动。
  3. 将偏移量设为0.001,大约为100 m,并在查询中使用以下内容。

    (myTable.lat > (myLocation.lat - offset) AND myTable.lat < (myLocation.lat + offset)) AND (myTable.lon > (myLocation.lon - offset) AND myTable.lon < (myLocation.lon + offset))

  4. 这应该为您提供小半径范围内的资产列表

  5. 这里的诀窍是将位置视为浮动而不是真正的位置。

    对于抵消:http://en.wikipedia.org/wiki/Decimal_degrees