Как агрегировать геолокацию пользователя в реальном времени с помощью библиотеки геометрии S2 на разных уровнях масштабирования?
Я работаю над идеей, в которой каждый пользователь (~10000 одновременно работающих пользователей) транслирует свое географическое местоположение. Я хочу объединить пользователей и отобразить на карте одним указателем на разных уровнях масштабирования после этого. Если пользователь увеличивает или уменьшает масштаб, то этот указатель также распределяет и объединяет пользователей в соответствии с этим конкретным уровнем масштабирования карты с использованием ячеек S2.
Вначале любой пользователь будет видеть глобус точно так же, как Google Earth, после этого. Если пользователь увеличивает или уменьшает масштаб в определенной позиции, нам нужно объединить пользователей в соответствии с этим уровнем масштабирования пользователя (текущим).
Вначале я планировал использовать какой-то потоковый инструмент, такой как Kafka, и для инструментов потоковой обработки, таких как flink, и из внешнего интерфейса я буду передавать данные пользователя, например, широту, долготу и долготу и широту границ с текущего уровня масштабирования и в серверной части я просто проверьте данные потока Если пользователи lat, long попадают в граничные lat, long, тогда просто верните этого пользователя с его широтой, long и просто укажите на карте, но это не то, что я хочу делать, я хочу агрегировать всех пользователей в определенном регионе и отображать только один указатель после этого, если я увеличу масштаб внутри этого указателя, он распределит указатель и покажет некоторые другие указатели. Если я просто увеличу масштаб на максимальном уровне карты, пользователи покажут отдельные.
Я хочу работать с агрегацией данных < 30 секунд назад.
Во внешнем интерфейсе я использую Mapbox для отображения пользователей на карте. Я хочу знать, как использовать ячейки библиотеки S2 для агрегирования данных, и я также ищу, как сбалансировать уровни масштабирования Mapbox и уровни масштабирования S2.
На выходе что-то вроде этого указывает
1 ответ
Это не имеет ничего общего с Kafka или Streaming, кроме приема. Различные фреймворки Javascript (начиная с D3) уже предоставляют такую функцию, и вы должны запрашивать данные из базы данных /API с фильтрами запросов вокруг поля отображаемых координат, а не напрямую из потока.