Trover - это потрясающее приложение: оно показывает вам поток открытий (POI), которые люди загрузили - отсортированные по расстоянию от любого местоположения, которое вы укажете (обычно ваше текущее местоположение). Чем дальше вы прокручиваете канал, тем дальше отображаются отображаемые открытия. Индикатор достаточно точно показывает, насколько далеко находятся показанные в настоящее время открытия (см. Скриншоты на веб-сайте).
Это отличается от большинства других приложений на основе определения местоположения, которые предоставляют свои результаты (POI) на основе фиксированных областей (например, дают мне все пиццерии с радиусом 10 км), которые могут быть реализованы с использованием одной пространственной структуры данных (или механизма SQL, поддерживающего пространственные типы данных). Доставить результаты, как это делает Trover, значительно сложнее:
Вы можете запросить POI для произвольных местоположений. Дайте Trover место на Дальнем Востоке России, и оно доставит открытия, где первое находится в 2000 км и непрерывно увеличивается оттуда.
Список результатов POI не ограничен некоторым пространственным диапазоном. Если вы прокручиваете ленту достаточно долго, вы, вероятно, увидите открытия, которые находятся на другой стороне земного шара.
Вышеуказанные пункты требуют полужесткого упорядочения их POI для любого местоположения. Тот факт, что вы можете прокрутить вниз и перезагрузить больше открытий, подразумевает, что они могут доставлять определенные разделы отсортированных данных (например, дать мне следующие 20 открытий, которые находятся по крайней мере в 100 км от моего текущего местоположения).
Это быстро, индикация получения и расстояния мгновенная. Открытия должны быть предварительно отсортированы. Я не знаю, сколько открытий у них есть в их БД, но это должно быть больше, чем то, что вы хотите отсортировать по запросу
Я нахожу эти характеристики весьма примечательными и удивляюсь, как это реализовано. Любые предложения, какую структуру данных, алгоритмы или кэширование можно использовать?