为了账号安全,请及时绑定邮箱和手机立即绑定

如何在同一个发布请求中多次使用地理编码功能(npm:node-geocoder)?

如何在同一个发布请求中多次使用地理编码功能(npm:node-geocoder)?

慕哥9229398 2022-10-27 15:43:09
我一直在尝试创建一个function returnCoords(par1)用户可以在其上输入文本输入,并使用node-geocodernpm 将其转换为坐标的方法。尽管该函数看起来工作正常,但在返回该函数时它会给出undefined结果。我尝试用它来解决这个问题,async但await无论有没有这些,似乎都没有任何效果。我也尝试过传递一个对象/数组(两个文本), geocoder.geocode(array/object, async function(err, data){...})但似乎也不起作用,因为它只接受String值。var express = require('express');var router = express.Router();var nodeGeocoder = require('node-geocoder');var geocoderOptions = {    provider: "google",    httpAdapter: "https",    apiKey: process.env.GEOCODER_API_KEY, //collect key from hidden environment variable    formatter: null}var geocoder = nodeGeocoder(geocoderOptions);router.post('/updateMap', async (req, res) => {    //GET USER TEXT (MAP) INPUT & convert to coordinates      //req.body.mapFrom: "LA, USA"      var from_coords = await returnCoords(req.body.mapFrom);    console.log("TEST 1:" + typeof(from_coords));    console.log("TEST 2:" + from_coords);    //console.log("TEST 3:" + from_coords[0]);    //console.log("TEST 4:" + from_coords[0].latitude);    //console.log("TEST 5:" + from_coords[0].longitude);    });async function returnCoords(userInput){    geocoder.geocode(userInput, async function(err, data){        if(err || !data.length) {            req.flash('error', 'Invalid address');            return res.redirect('back');        }                console.log("LAT:" + data[0].latitude);        console.log("LNG:" + data[0].longitude);                return data;    });}CONSOLE LOG 按以下顺序打印:TEST 1 : undefinedTEST 2 : undefinedLAT    : 34.0522342LNG    : -118.2436849
查看完整描述

1 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

returnCoords给出您的意图是无效的(您不想“分叉”地理编码功能),但返回结果Promise可以解决geocode。


请注意,geocoder.geocode支持Promise-based API*,因此只需更改returnCoords为:


async function returnCoords(userInput) {

    const data = await geocoder.geocode(userInput);

    ... // logs and stuff

    return data

}

https://github.com/nchaulet/node-geocoder#readme


查看完整回答
反对 回复 2022-10-27
  • 1 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号