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

标签 javascript node.js reactjs express geolocation

大家好,请原谅我的问题逻辑,因为我是新来的。我正在使用 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/

相关文章:

javascript - Math.random() 在此 JavaScript 片段中做了什么?

javascript - JS 中输入掩码插件的事件处理程序

javascript - Node.js 有必要设置 Content-Type 吗?

reactjs - 为什么我的环境变量使用 parcel 和 react 返回 undefined

javascript - 检测单词和句子的完成情况

node.js - nodegit(用于 Node.js 的 libgit2): How to push and pull?

node.js - 无法从 0.12.13 更新 sails 1.0.1

javascript - react-google-maps 不起作用

javascript - 如何在 React 中更改元素的样式?

javascript - 切换 ul(子菜单)