嘿伙计们我正在开发一个特定的Android应用程序,其中包含遍布全国各地的BigData,我想根据用户当前位置的半径来过滤这些位置。
为了澄清我的目的,我的用户是一名汽车司机,通过使用标记指定起点和终点,在Google地图上选择随机道路,然后我使用Google API在这些点之间绘制道路
我想要做的是从我的数据库中获取位于所选道路上的位置,因此我想到根据用户的当前位置过滤我的数据库位置并给它一个半径,即道路上的距离(距离)在用户选择的两个标记之间)并开始在地图上显示它们。
注意:我想过将数据库中的位置与用户的当前位置进行比较,如果它比半径(两个标记之间的距离)短,那么我会将其添加到我的过滤结果中
但我认为这是一个混乱,我有一个BigData,它需要太多时间来比较。
Google Maps是否提供了可用于过滤此问题的算法或API? 即使它是用Web编程语言编写的,我也可以创建一个Web服务来处理它并将它发送到我的应用程序。
答案 0 :(得分:0)
使用KD-tree K nearst邻居来过滤远离汽车的点。这是N的时间复杂度。但插入树是N * log N
答案 1 :(得分:0)
我找到了解决问题的方法
在我的应用程序中,我使用Firebase作为cloudbacked,幸运的是它有一个执行GeoQueries的库,名为GeoFire,它的文档是here
它可以创建Firebase中所有已保存位置的查询,因为特定位置是半径,以毫秒为单位,这是我真正需要的