我正在构建一个小型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);
});