我有一个应用程序android
,它有一些地理参考点并显示用户使用 a 请求的某些点spinner
,它是对本地数据库的查询。问题是如何显示距离我的位置 1 公里半径内的点?
criaderosMap = criaderoDao.queryBuilder()
.where(CtlPlCriaderoDao.Properties.Latitud.isNotNull()).list();
该代码为我带来了数据库的所有要点,在那里我可以按相关字段进行过滤,但我需要咨询 1 公里内最近的字段。
我认为它可以在两者之间完成。
过滤它们的一种方法是从SQL 查询中获取距离小于 1000 米的那些 (
distance < 1000
):另外通过Android SDK还可以通过distanceTo()方法进行地理位置值的比较
这将是一个例子
该方法
comparePrintInfo()
执行比较以打印一公里范围内的位置。您必须修改该方法
getListOfPostitions()
,以便它获取要比较的位置列表,可能来自服务。活动主.xml:
Android 有一个Location类,除其他外,它允许您计算两点之间的距离。
在您的情况下可以帮助您的方法是distanceTo,它返回两点之间的距离(以米为单位)。下面是这个类的一个例子:
我能找到的最接近并且有效的方法如下:
我取自:Stackoverflow 英语
distanceBetween 方法可以帮助您,它以米为单位返回两点之间的距离。您只需要在列表和起点之间进行迭代。
该方法计算两个位置之间的近似距离(以米为单位),以及它们之间最短路径的起点和终点链接。
参考:
https://developer.android.com/reference/android/location/Location
首先从数据库中获取所有标记,然后使用以下代码计算一个标记与另一个标记之间的距离:
要完成你所做的是问:
}
顺便说一句,如果您不知道如何理解您的观点,请使用您要与之比较的
for
和。if
因此,您可以显示周围 1 公里内的所有点。