Получить список пользователей в пределах отдельного географического диапазона

Список пользователей с их местоположением (long & lat) и радиусом (в километрах) приведен в моей базе данных firebase, эффективно определяя отдельные "круги действия", например

{
  "users": {
    "foo": {
      "lat": 11.2549387,
      "long": 17.3419559,
      "radius": 50
    },
    "bar": {
      "lat": 9.5123445,
      "long": 17.1221547,
      "radius": 80
    }
  }
}

Теперь моя цель - опросить всех пользователей, чей круг охватывает определенное место (снова long & lat). Поскольку список пользователей может быть очень длинным, нет смысла просто рассчитывать расстояние до местоположения для каждого отдельного пользователя каждый раз.

Я знаю о GeoFire for JavaScript, но это не решает мою проблему полностью, потому что она не подходит для вычислений с нефиксированным радиусом.

Решение должно быть либо на стороне клиента (JavaScript), либо в виде облачной функции. Есть идеи по этому поводу?

1 ответ

Ну, GeoFire - это решение для вас, потому что оно оптимизирует запрос для вас.

Я знаю о GeoFire for JavaScript, но это не решает мою проблему полностью, потому что она не подходит для вычислений с нефиксированным радиусом.

Он будет работать с нефиксированным радиусом, вам просто нужно обновить радиус вашего запроса и / или широту в длину с новым пользователем, и он получит соседних пользователей.

Для Geofire вам нужен дополнительный отдельный узел для хранения объекта геолокации каждого пользователя

Другие вопросы по тегам