gpt4 book ai didi

javascript - 如何在我的 node.js 中使用地理定位来获取用户设备的纬度/经度

转载 作者:行者123 更新时间:2023-12-05 05:03:25 25 4
gpt4 key购买 nike

大家好,请原谅我的问题逻辑,因为我是新来的。我正在使用 React 和 Node 构建我的第一个全栈应用程序。我正在考虑三种方法,但不确定哪种方法最有效。

方法一

当用户在前端填写表单并请求通过地理定位 API 访问其地理位置时,我希望能够获取用户的纬度/经度。例如,当用户提交他们的地区和社区名称时,后端将调用 getCurrentPosition 地理定位 API。然后返回的纬度/经度将构成要发送到数据库的数据的一部分,如下面提取的代码所示。但是当我尝试这种方法时,我遇到了两个挑战。首先,错误消息是 navigator is not defined。其次,我不知道如何检索返回的纬度/经度并将其声明为常量以在创建位置时使用它。请看下面的代码:

if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(success, error);
} else {
alert("Your browser is out of fashion. There is no geo location!")
}

function success(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude
console.log(`Your latitude is ${latitude} and your longitude is ${longitude}`)
return (latitude, longitude);
}

function error() {
alert("Can't detect your location. Try again later.")
}

如何在函数外将纬度/经度声明为常量。有些喜欢:

 const communityName = req.body.communityName;
const latitude = (success).latitude;
const longitude = (success).longitude;

方法 2

我下载了 geolocation npm 包并在下面的代码中使用它,但收到未定义导航器的错误。如果我要使用这种方法,我该如何定义导航器以及如何在函数外部将纬度/经度声明为常量?

const geolocation = require('geolocation');

geolocation.getCurrentPosition(function (err, position) {
if (err) throw err
console.log(position)
})

方法 3

我阅读了有关此方法的信息,但无法获得有效示例。建议我应该使用地理定位 API 来获取用户设备的纬度/经度,并将坐标作为 req.body 数据的一部分发送到后端 API。如果这是一个好方法,是否有我可以遵循的教程?

拜托,我是 Javascript 和编码的新手,但我已经取得了很大的进步,但这让我对我的项目有所了解。没有回答是lease太错了。废话中有道理。

最佳答案

navigator.geolocation

这是浏览器提供的API。它不适用于 Node.js。

I downloaded the geolocation npm package

这包装了 navigator.geolocation。它专为使用 Node 模块和编译步骤(例如 Webpack 提供的)编写客户端代码而设计。它不适用于 Node.js。

It is suggested that I should use the geolocation API to get the user device lat/long and send the coords as part of req.body data to the backend API.

MDNGoogle两者都介绍了用于从客户端 JavaScript 发出 HTTP 请求的 fetch API。

还有一些React-specific information在 React 常见问题解答中。

然后您可以使用 req.body不同的端点读取数据如果您已经配置了合适的正文解析中间件。

关于javascript - 如何在我的 node.js 中使用地理定位来获取用户设备的纬度/经度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61696252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com