javascript - 使用 navigator.geolocation 使用用户的位置名称填充 Google 搜索框
问题描述
现在,我有一个事件监听器,因此用户可以输入他们的位置并获取他们的坐标。对于选择器,我的函数如下所示:
searchBox.addListener('places_changed', () => {
const place = searchBox.getPlaces()[0]
if (place == null) return
const latitude = place.geometry.location.lat()
const longitude = place.geometry.location.lng()
/* MY WEATHER FETCH FUNCTION HERE */
}).then(res => res.json()).then(data => {
setWeatherData(data, place.formatted_address)
})
})
然后将天气数据以及来自谷歌地图的格式化地址传递下来。但是 div 设置了用户输入的当前位置。
function setWeatherData(data,place){
locationElement.textContent = place
statusElement.textContent = titleCase(data.weather[0].description)
}
这段代码中真正重要的是locationElement.textContent = place part
. 它将 locationElement 设置为他们使用 formatted_address 键入的地址的“地点”。
navigator.geolocation.getCurrentPosition()
但是,如果他们授予位置权限,我希望能够使用 获取他们当前的位置。如果他们确实授予它,它将使用从地理定位 javascript API 接收到的经度和经度将 locationElement 设置为它抓取的任何位置。
理想情况下,我想运行一个函数:
如果用户授予位置权限,则使用他们的坐标自动完成搜索框,然后这将触发事件侦听器。
现在我正在使用
navigator.geolocation.getCurrentPosition(grabLocation, onError, options);
GrabLocation 函数目前看起来像
function grabLocation(pos) {
var crd = pos.coords;
/* My WEATHER FETCH FUNCTION HERE */
}).then(res => res.json()).then(data => {
setWeatherData(data,place)
})
}
但是,不幸的是,我不确定如何使用 searchBox.getPlaces()[0] 传递“位置”,就像我在事件侦听器中所做的那样,因为地理定位 javascript API 只能获取绳索。
我怎样才能做到这一点?
解决方案
推荐阅读
- groovy - 一步一步在groovysh中调试groovy代码
- javascript - Javascript将.txt文件转换为由单词“END”分割的集合
- blazor - 具有 Blazor 表单验证的条件类
- python - 将 Pandas Dataframe 转换为多级嵌套 JSON
- javascript - 仅在顶角带有平铺层的传单地图
- yii2 - 有没有办法在 kartik ExportMenu 中为文档设置标题?
- excel - 如何在 excel 中将变量转换为常规日期格式
- html - 减少引导表宽度,colspan 不起作用
- mysql - 分组并显示列中的值
- assembly - 当我尝试在 Armv8 程序集中分配数组时执行冻结