首页 > 解决方案 > 等待用户对地理位置提示的响应,然后提交表单

问题描述

我有一个按钮,用户可以点击它来使用他们的位置来查找附近的地方。如何编写 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.');
        }

    };

标签: javascriptjqueryfunctiongeolocation

解决方案


这是我使用的代码。用户的 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");
  });
}

推荐阅读