如何获取 Google 将几何位置数据放入 firebase

How to get Google places geometry location data into firebase

我正在使用 React 应用程序在 formik 表单提交时将一些信息存储到 firebase/firestore 中。当用户输入一个位置时,react-google-autocomplete 执行自动完成,然后 returns 格式正确的地址,以及 places.geometry.location 纬度和经度。提交时,我可以使用 JSON.stringify 纬度和经度来控制日志或警报,但是控制台 returns 一个 firebase 错误,说明如下:FirebaseError: Function addDoc() called with invalid data. Unsupported field value: a custom object (found in field orggeometry in the document

Formik code

这显示了我如何对 formik onSubmit 等进行编码

Input ref for the autocomplete, showing where my values for location are set

这显示了输入参考,以及如何设置值。我有两个。它们的设置方式,我目前可以在我的两个自动完成输入中选择一个位置并获取纬度和经度数字后提交表单。

Example of working latitude and longitude on my Origin

如您所见,表单的值问题为零。问题完全出在火力点上。我搜索了 Google 个搜索、这个网站、Firebase 文档和 Places/Maps 个文档。任何帮助将不胜感激。

好吧,在沉睡并花了一些时间研究它之后,我找到了一个解决方案来解决我的问题。问题是 place.geometry.location returns 一个同时具有纬度和经度的对象,Firebase 不喜欢它。我尝试 JSON.stringify 整个表单的值,但没有修复它,但是如下重写它针对我的特定情况修复了它。

const { ref } = usePlacesWidget({apiKey: process.env.REACT_APP_GOOGLE, onPlaceSelected: (place) => {setPlace(place); formik.setFieldValue("Origin", place.formatted_address); JSON.stringify(place.geometry.location) formik.setFieldValue("OriginGeometry", JSON.stringify(place.geometry.location))

现在它 returns 一个由对象本身组成的字符串,在我看来对于任何想要一个非常干净的数据库条目的人来说不是理想的修复,但在我的情况下完全没问题。