Облачные функции Firebase находят близлежащие места - PullRequest
0 голосов
/ 19 сентября 2018

Мне нужно найти близлежащие транспортные средства в пределах определенного радиуса до заданной точки и отсортировать их по расстоянию от заданной точки.Предоставляет ли firebase способ запрашивать географические данные?Мне нужно сделать это в облачной функции.Совершенно новый для Firebase, поэтому любая помощь приветствуется.

1 Ответ

0 голосов
/ 19 сентября 2018

Используя библиотеку geofire, вы можете сделать что-то вроде этого ...

exports.cloudFuncion = functions.https.onRequest((request, response) => {
  // logic to parse out coordinates
  const results = [];
  const geofireQuery = new GeoFire(admin.database().ref('geofireDatabase')).query({
      center: [coordinates.lat, coordinates.lng],
      radius: 15 // Whatever radius you want in meters
    })
    .on('key_entered', (key, coords, distance) => {
      // Geofire only provides an index to query.
      // We'll need to fetch the original object as well
      admin.database().ref('regularDatabase/' + key).on('value', (snapshot) => {
        let result = snapshot.val();
        // Attach the distance so we can sort it later
        result['distance'] = distance;
        results.push(result);
      });
    });

  // Depending on how many locations you have this could fire for a while.
  // We'll set a timeout of 3 seconds to force a quick response
  setTimeout(() => {
    geofireQuery.cancel(); // Cancel the query
    if (results.length === 0) {
      response('Nothing nearby found...');
    } else {
      results.sort((a, b) => a.distance - b.distance); // Sort the query by distance
      response(result);
    }
  }, 3000);
});

Если вы не уверены, как использовать geofire хотя Я бы рекомендовал посмотреть на этопост Я сделал, который объяснит многое из того, как geofire работает и как его использовать /

...