我有一些位置(lat& long),我需要在列表视图中显示这些位置。我完全可以做到这一点。
但现在我想显示位于我当前位置之前的位置。这意味着我想跳过我在驾驶过程中已经通过的位置。
让我更清楚地澄清一下。我们有像loc1(lat,lon),loc2(lat,lon),loc3(lat,lon),loc100(lat,lon)这样的位置。在我开车的过程中,我喜欢看地点(loc1 - loc100)。但现在我想要隐藏我从当前位置/位置传递的位置(在loc1到loc100之间)。说,我已经通过了loc1,loc3,loc5,所以我需要从列表视图中的列表中跳过这3个位置。为此,我需要知道哪些位置(loc1-loc100)位于我当前位置(gps当前位置)后面,以便我可以跳过这些位置。
有什么想法吗?我怎么能在我的代码中实现这一点?请帮忙解决这个问题。
答案 0 :(得分:0)
我将有两个Location对象的数据结构(例如LinkedList):
向用户显示的列表将基于unvisitedLocations数据结构的内容。
根据您的实时位置,您需要根据您选择的给定半径阈值检测unvisitedLocations数据结构中每个Location对象的接近程度。为此,您可以使用LocationManager.addProximityAlert()方法注册每个位置(在检测接近度时将触发PendingIntent),或者循环访问unvisitedLocations数据结构并自行执行此操作 - 例如:
if(currentLocation.distanceTo(unvisitedLocations[i]) < threshold){
visitedLocations.add(unvisitedLocations[i]);
unvisitedLocations.remove(i);
}
这将根据您的实时位置为您提供当前访问和未访问的地点列表。
请注意,随着unvisitedLocations的初始大小增加,性能将成为问题,因为您要循环遍历整个数据结构内容以确定每个实时位置更新的位置接近度,这可以是每秒一次全球定位系统。如果性能成为一个问题,您应该考虑移动接近检测服务器端并使用空间数据库,该数据库具有特殊的数据结构,使接近度检测的密集程度大大降低。