【问题标题】:Wait for user response to geolocation prompt, then submit form等待用户对地理位置提示的响应,然后提交表单
【发布时间】:2019-09-01 17:11:39
【问题描述】:

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

    };

【问题讨论】:

    标签: javascript jquery function geolocation


    【解决方案1】:

    这是我使用的代码。用户的网络浏览器会这样提示用户:

    第一个块是用户授予权限时您要执行的操作,第二个块function(error)是用户拒绝权限时您要执行的操作。

    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");
      });
    }
    

    【讨论】:

      【解决方案2】:

      我得到它与以下工作:

      
      $('#submit_latlng').click(function() {
              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;
                  $('#geo-loc-form').submit();
              }
      
              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.');
              }
      
          });
      
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-24
        • 1970-01-01
        • 2013-01-06
        • 2012-03-23
        • 1970-01-01
        相关资源
        最近更新 更多