javascript - 等待用户对地理位置提示的响应,然后提交表单
问题描述
我有一个按钮,用户可以点击它来使用他们的位置来查找附近的地方。如何编写 if/else 语句以提示用户允许访问其位置,等待响应,然后提交表单或在他们拒绝时取消?
<button id="submit_latlng" class="btn btn-secondary my-2 my-sm-0" type="submit">Use Current Location</button>
$('#submit_latlng').click(function() {
getLocation(),
$('#geo-loc-form').submit()
})
function getLocation(){
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(
getPosition,
positionError
)
}
function getPosition(position) {
document.getElementById('user_lat').value = position.coords.latitude;
document.getElementById('user_lng').value = position.coords.longitude;
}
function positionError(error) {
if (error.PERMISSION_DENIED) alert('Location services are off. Please enable location services, or use zip code search.');
showError('Geolocation is not enabled.');
}
};
解决方案
这是我使用的代码。用户的 Web 浏览器将提示如下:
第一个块是在用户授予权限时执行的操作,第二个块函数(错误)是在用户拒绝权限时执行的操作。
function getCoordinates()
{
navigator.geolocation.getCurrentPosition(function(location) {
var lat = location.coords.latitude;
var lng = location.coords.longitude;
console.log("Location permission granted");
console.log("lat: " + lat + " - lng: " + lng);
},
function(error) {
console.log("Location permission denied");
});
}
推荐阅读
- node.js - Node JS 手动处理 HTTP 重定向并保留 cookie
- css - 如果输入已经填写,VueJS会更改输入的边框颜色
- python - 用python从左到右解码二维码
- php - 让本地 Symfony 2.8 应用程序像在 prod 环境中一样运行
- java - InputStream 不从 JAR 中读取某些文件
- r - 求一个变量被另一个变量子集化的平均值
- proxy - ddev 在代理后面使用 drush 无法连接
- reactjs - 从 powershell 在 Appveyor 上运行 Jest 测试
- swift - 使用来自 django-allauth 的访问令牌登录 Spotify iOS SDK
- angular - 自 Angular/Material 从 5 升级到 6 后,自定义本机日期适配器不再有效