google-aws lambda 函数内的地理定位错误的纬度和经度

google-geolocation wrong lat and lng inside aws lambda function

我正在尝试通过他的 Ip 获取用户 geoLocation, 所以我尝试在我的 lambda 函数中调用 googleapi

const getLatLng = () => axios
  .post(`https://www.googleapis.com/geolocation/v1/geolocate?key=${key}`)
  .then(({ data }) => data);

现在奇怪的是,当我在本地 运行 我的节点项目并调用端点时,它工作得非常好,它检测到我的 ip 和 return 我正确的纬度和经度 - 然后我在将服务部署到 aws 中的 api 网关后使用相同的代码, 它 return 我的经纬度错误,所以请求有效但值错误。

有谁知道可能是什么原因? 我真的应该从我的客户端调用 googleapi 并将 lat 和 lng 传递到我的服务器然后将它们用于我的其他计算和我需要的东西吗?

Google 地理定位基于您请求的设备/IP。

如果您从 AWS 实例请求该信息,它会给您最好的猜测 A​​WS 服务器 的物理位置。在这种情况下,Google 完全不知道客户是谁,也不知道您想要他们的位置信息,也没有办法获得这些信息。

您应该使用来自 client-side 的地理定位并将该数据传递到您的服务器,或者使用可以根据您的服务器认为客户端请求来自的 IP 执行地理定位的不同服务。