我试图计划和构建一个小型的Android应用程序,它接受一个坐标的kml文件,这些坐标被组合在一起作为一个lineString,每个线串可能有几十个点,我试图建立一个应用程序,当用户旅行时,如果他们在道路上标记为一条线的一组这些坐标内,将提示警报,在一个kml文件中可能有数千条线路,我知道如何提示警报等但是想知道是否我在程序启动时解析所有这些坐标的方法,然后不断检查用户是否接近其中任何一个,如果在线串提示内是一个好方法去做呢?这种方式看起来效率不高,在开始之前任何想法都会很棒。
离。
线串
坐标
坐下1
.......... 2
等等.........
/ cordinates
/线串
可能有数千条线
非常感谢
答案 0 :(得分:1)
我同意,如果您定期检查用户的位置并将坐标与大型列表进行比较,则效率低下(并且CPU密集度)。
首先,我会提前说,我只是在抛出抽象的评论/想法,因为没有其他人做出回应。我从来没有使用过KML,也没有编写过像你描述的那样做的应用程序,所以我只是在抛出抽象的评论/想法。
您没有提供有关LineStrings范围的任何详细信息(例如,kml文件是否会有长距离的LineStrings?例如,中国的长城)。您也没有解释用户可能如何旅行(步行,骑自行车,驾驶等)。
基于以上所述,我将根据kml文件所涵盖的地理区域,用户的起始位置和运输方式(即他们可能行进的距离)来创建总坐标的子集。在给定的时间内。)
当然,上述问题在于您不能单独依赖经度或纬度的匹配,因此您需要使用用户与为每个LineString定义的任何点之间的实际距离进行子集化。为了保持其效率(并使您的子集尽可能小),您还需要在用户离开或朝向各种LineStrings中定义的坐标时更新子集。
嗯,确实抽象,可能没有任何帮助,但这是一个有趣的问题,可以考虑。