我有一个本地数据库,其中包含我试图根据用户位置搜索的 2000 多个位置。我只想在用户附近的地图片段中显示一些标记,但到目前为止还没有找到方法。
目前数据库是 csv 文件的形式,所以我可以很容易地将其更改为不同的类型。但是我一直在等待这样做,直到找到一个可以根据用户周围的半径搜索坐标的实用程序。有人有什么建议吗?
我有一个本地数据库,其中包含我试图根据用户位置搜索的 2000 多个位置。我只想在用户附近的地图片段中显示一些标记,但到目前为止还没有找到方法。
目前数据库是 csv 文件的形式,所以我可以很容易地将其更改为不同的类型。但是我一直在等待这样做,直到找到一个可以根据用户周围的半径搜索坐标的实用程序。有人有什么建议吗?
您可以为用户周围的某个框定义一个 LatLngBounds 对象,然后使用 bounds.contains(LatLng) 确定您的哪些位置在该半径内。我已经将这种方法用于与您的大小大致相同的集合,并且对于我们的目的来说它足够快。您将搜索一个矩形,而不是一个半径,但由于地图是一个矩形,也许这更有意义?
这是一个棘手的话题,解决方案不是直截了当的。我简要列出了我使用的步骤,在我的情况下,这适用于超过 100k 的资产。
使用大约 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))
这应该为您提供小范围内的资产列表
这里的技巧是将位置视为浮动而不是真正的位置。