【问题标题】:Fetch nearby GEO results using GEOFirestore使用 GEOFirestore 获取附近的 GEO 结果
【发布时间】:2018-12-31 04:23:20
【问题描述】:

我正在使用 GeoFirestore 在 Cloud Firestore 上编写一个云函数,以根据中心和半径查询附近的位置。

初始化代码如下所示

    const firebase = require('firebase');
    const admin = require('firebase-admin');
    const functions = require('firebase-functions');
    const GeoFirestore = require("geofirestore").GeoFirestore;
    admin.initializeApp(functions.config().firebase);
    const db = admin.firestore();

要查询的JS代码是

const object = db.collection('UserObject');
var geoFirestore = new GeoFirestore(object);
const geoQuery = geoFirestore.query({
    center: new firebase.firestore.GeoPoint(17.500362, 78.587374),
    radius: 1
});
geoQuery.on('ready', () => {
    var locations = geoQuery._locationsTracked;
    var keys = [];
    locations.forEach(function (locationMap, key) {
        if (typeof locationMap !== 'undefined' && locationMap.isInQuery) {
            keys.push(locationMap);
        }
    });
    response.status(200).json(keys);
  });

我是 GeoFirestore 库的新手。我的问题是,这是获取附近位置的正确实现,还是有其他方法可以使用此库查询附近位置?

【问题讨论】:

    标签: javascript google-cloud-firestore geofirestore


    【解决方案1】:

    这种需要大量返工,但解决方案会更简单(代码在 cmets 中解释):

    const object = db.collection('UserObject');
    const geoFirestore = new GeoFirestore(object);
    const geoQuery = geoFirestore.query({
      center: new firebase.firestore.GeoPoint(17.500362, 78.587374),
      radius: 1
    });
    
    // Where we will store the results
    const results = [];
    
    // As documents come in, push them into our results
    geoQuery.on('key_entered', (key, document) => results.push(document));
    
    // After the query is initially complete we then send the results to the client
    geoQuery.on('ready', () => response.status(200).json(results));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-04
      • 2013-09-27
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 2018-03-16
      相关资源
      最近更新 更多