【发布时间】:2011-08-22 10:05:57
【问题描述】:
Trover 是一个很棒的应用程序:它向您显示人们上传的发现 (POI) 流 - 按与您指定的任何位置(通常是您当前位置)的距离排序。您在提要中滚动得越远,显示的发现就越远。一个指示器非常准确地告诉您当前显示的发现有多远(参见网站上的屏幕截图)。
这与大多数其他基于位置的应用程序不同,这些应用程序基于固定区域(例如,给我所有半径为 10 公里的比萨店)提供结果 (POI),可以使用单个空间数据结构(或支持空间的 SQL 引擎)来实现数据类型)。以 Trover 的方式交付结果要困难得多:
您可以查询任意位置的 POI。给 Trover 一个位于俄罗斯远东地区的位置,它将在 2000 公里外的第一个位置提供发现,并从那里不断增加。
兴趣点的结果列表不受某些空间范围的限制。如果您在提要中滚动足够长的时间,您可能会看到地球另一端的发现。
以上几点要求对任何位置的 POI 进行半严格排序。您可以向下滚动并重新加载更多发现这一事实意味着它们可以提供已排序数据的特定部分(例如,给我接下来的 20 个发现,这些发现距离我当前位置至少 100 公里)。
速度很快,抓取和距离指示是即时的。发现必须预先分类。我不知道他们在他们的数据库中有多少发现,但它一定比你想要临时排序的要多。
我发现这些特性非常显着,想知道这是如何实现的。有什么建议可以使用哪种数据结构、算法或缓存?
【问题讨论】:
标签: sorting geolocation geospatial distance