我正在构建一个小型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 .
答案 0 :(得分:2)
这里是Tile38节点库的作者。很抱歉让这个工作变得困难。我注意到自述文件中的拼写错误可能会让你失望。我会纠正这个。
execute()方法返回一个Promise,并且(正如您已经想到的那样)该示例应该已经声明了
query.execute(function(results).then(results => {
console.dir(results);
});
而不是
.html()
答案 1 :(得分:1)
经过长时间的调试后,我发现以下代码正在运行:
let query = client.nearbyQuery('fleet').distance().point(33.5123, -112.2693, 6000)
query.execute().then(data => {
console.dir(results); // results is an object.
}))