我想创建一个redux操作,该操作接受用户的地理位置(通过navigator.geolocation
)并反向地理定位他们的城市。
这是我现在的代码:
export function getGeolocation() {
return dispatch => {
const geolocation = navigator.geolocation;
geolocation.getCurrentPosition((position) => {
dispatch({
type: GET_GEOLOCATION,
payload: position
});
});
};}
我想更新payload
以传递州和城市名称。
我想过几种方法可以做到这一点,所有这些似乎并不理想:
我尝试使用名为reverse-geocode的库执行此操作,但在将其合并到我的操作中时出现了一个奇怪的错误:通过向我的文件添加let reverse = require('reverse-geocode');
,我在记录时遇到错误说"依赖的请求是表达式,"谷歌搜索了一下后,我不确定为什么会在这种情况下发生错误。
我考虑过使用引用here的Google Maps API,但我不确定将API密钥添加到我的操作中的最佳方式是什么?通常,该信息存储在服务器上,我不想设置单独的本地API端点来管理它。
我从反向地理编码中提取了主要的json文件,但是我在加载它时遇到了问题。当我添加类似
的简单代码时const USLocations = require('{relativePathToAssetsDirectory}/USLocations.json')
console.log(USlocations)
它给了我一个空白对象,可能是因为USLocations.json
文件太大了(?)。此外,鉴于该文件为4 MB,我只是这样做,以便我可以在应用程序启动时对用户进行地理定位,我想知道这是否是一种有效的方法来执行此操作。
对于我来说,在redux中,最好的方法是使用长/一对并将其转换为城市和状态以便在加载时传入我的应用程序?