我有一个超过2000个位置的本地数据库,我试图根据用户位置搜索。我只想在用户附近的Map Fragment中显示一些标记,但到目前为止还无法找到方法。
目前数据库采用csv文件的形式,因此我可以轻松地将其更改为其他类型。但是我等着这样做,直到我找到一个可以根据用户周围的半径搜索坐标的实用程序。有人有什么建议吗?
答案 0 :(得分:0)
您可以为用户周围的某个框定义LatLngBounds对象,然后使用bounds.contains(LatLng)来确定您的哪个位置在该半径内。我已经将此方法用于与您的大小相同的集合,并且它足够快以达到我们的目的。你将搜索一个矩形,而不是一个半径,但由于地图是一个矩形,也许这更有意义吗?
答案 1 :(得分:0)
这是一个棘手的话题,解决方案并不简单。我简要列出了我使用过的步骤,这对我的案例中的超过10万资产起作用。
将偏移量设为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))
这应该为您提供小半径范围内的资产列表
这里的诀窍是将位置视为浮动而不是真正的位置。