0

我有一个本地数据库,其中包含我试图根据用户位置搜索的 2000 多个位置。我只想在用户附近的地图片段中显示一些标记,但到目前为止还没有找到方法。

目前数据库是 csv 文件的形式,所以我可以很容易地将其更改为不同的类型。但是我一直在等待这样做,直到找到一个可以根据用户周围的半径搜索坐标的实用程序。有人有什么建议吗?

4

2 回答 2

0

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

于 2013-10-01T17:35:57.180 回答
0

这是一个棘手的话题,解决方案不是直截了当的。我简要列出了我使用的步骤,在我的情况下,这适用于超过 100k 的资产。

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

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

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

这里的技巧是将位置视为浮动而不是真正的位置。

对于偏移:http ://en.wikipedia.org/wiki/Decimal_degrees

于 2013-10-01T17:39:47.947 回答