我正在构建一个小型GEO应用程序,它使用了http://tile38.com/https://www.npmjs.com/package/tile38节点模块。一切工作正常,但是我无法从节点模块的NEARBY查询中获得结果。回调函数似乎无法正常工作,我花了很多时间,但找不到出路。我想要的是从附近的查询中获取结果并分配给变量。

这是代码:

var Tile38 = require('tile38');

var client = new Tile38({host: 'localhost', port: 9851, debug: true });

// set a simple lat/lng coordinate
client.set('fleet', 'truck1', [33.5123, -112.2693])
// set with additional fields


client.nearbyQuery('fleet').distance().point(33.5123, -112.2693, 6000).execute((err, results) => {
    console.log("########");
    // this callback will be called multiple times
    if (err) {
        console.error("something went wrong! " + err);
    } else {
        console.log(results + "##########");
    }
});;

但是当我尝试以下简单查询时,它工作正常。
client.get('fleet', 'truck1').then(data => {
  console.log(data); // prints coordinates in geoJSON format

}).catch(err => {
  console.log(err); // id not found
});

另外,当我在tile38-cli中尝试RAW查询时,它工作正常。
NEARBY fleet POINT 33.5123 -112.2693 6000

任何帮助,将不胜感激。

提前致谢。

编辑
我也尝试了以下方法,但是没有用。
let query = client.nearbyQuery('fleet').distance().point(33.5123, -112.2693, 6000)
query.execute(function(results).then(results => {
            console.dir(results);  // results is an object.
    }))

收到以下错误
query.execute(function(results).then(results => {
                                       ^
SyntaxError: Unexpected token .

最佳答案

这里是Tile38的节点库的作者。对不起,无法正常工作。我在自述文件中发现了一个错字,这可能使您失望。我会改正的。

execute()方法返回一个Promise,并且(如您已经知道的那样)该示例应该已经声明

query.execute().then(results => {
    console.dir(results);
});

代替
query.execute(function(results).then(results => {
    console.dir(results);
});

08-27 22:30