我试图规划并构建一个小Android应用程序,该应用程序接收一个坐标的kml文件,这些坐标被组合为一个lineString,每个linestring中可能包含数十个点,我试图构建一个作为用户的应用程序如果它们在一组标记为道路上的坐标的坐标内行驶,则会发出警报,一个kml文件中可能有成千上万的这些线,我知道如何提示警报等。但是我想知道我的处理方法在程序启动时解析所有这些坐标,然后不断检查用户是否靠近它们,以及是否在线串提示符内是解决此问题的好方法?这种方式似乎根本没有效率,在我开始之前,任何想法都很棒。
例如
lineString
座标
坐标1
.......... 2
等等.........
/坐标
/ lineString
也许数千条
非常感谢
最佳答案
我同意,如果您要定期检查用户的位置并将座标与大列表进行比较,那么它将效率低下(并且占用大量CPU)。
首先,我要事先说,我只是提出抽象的评论/想法,其他人都没有回应。我从未使用过KML,也从未编写过能够执行您所描述的任何功能的应用程序,因此我只是提出抽象的评论/想法。
您没有提供有关LineStrings范围的任何详细信息(例如,kml文件中是否会包含延伸很长距离的LineStrings?例如,中国的长城)。您也不会解释用户可能如何旅行(步行,骑自行车,开车等)。
基于以上内容,我将根据kml文件所覆盖的地理区域,用户的起始位置和运输方式(即,在给定的情况下他们可能行进多远)来创建总坐标的子集多少时间)。
当然,上述问题是您不能单独依赖于匹配经度或纬度,因此需要使用用户与为每个LineString定义的任何点之间的实际距离来进行子集化。为了保持效率(并使子集尽可能小),您还需要在用户远离或移向各种LineString中定义的坐标时更新子集。
嗯,确实是抽象的,可能没有帮助,但仔细考虑是一个有趣的问题。
关于java - 来自KML文件的Android接近警报,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4474938/