【问题标题】:Check if user device's GPS is on检查用户设备的 GPS 是否开启
【发布时间】:2014-11-25 11:48:40
【问题描述】:

我正在开发一个使用 jQuery Mobile 和 PHP 的应用程序。我没有使用 Phonegap 或其他框架。我需要找到用户的geolocation。如果用户设备的 GPS 已关闭,则我无法获取位置。现在我需要查找用户设备的 GPS 是否开启。

这是我现在使用的。

function getLocation() {
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(showPosition);
  } else { 
    x.innerHTML = "Geolocation is not supported by this browser.";
  }
}

function showPosition(position) {
  var lat=position.coords.latitude;
  var long=position.coords.longitude;
}

【问题讨论】:

标签: javascript php jquery-mobile gps


【解决方案1】:

你可以在加载时调用这个函数

      // Function to get location
      function getLocation(){
          navigator.geolocation.getCurrentPosition(function (pos) {
              var lat = pos.coords.latitude;
              var lng = pos.coords.longitude;
              if (lat == null) {
                  alert("GPS not activated!");
              } else {
                  alert("Latitude: "+ lat + " , Longitude: " + lng );
              }
          });
      }

【讨论】:

  • 即使 GPS 已关闭,地理定位 API 也会根据来自移动信号塔的位置以及可能来自 IP 地址的位置返回一个大致位置。
【解决方案2】:

我刚刚解决了这个问题。我正在使用:

navigator.geolocation.getCurrentPosition(successCallback, errorCallback, {maximumAge: 60000});

在 successCallback 中,我编写了获取位置后应该做什么的代码,在错误回调中,我编写了一条简单的警报消息来提示用户打开 GPS。

【讨论】:

  • 即使设备 gps 已关闭,geoLocation api 也会提供可能不太准确的通用位置。请正确阅读问题
【解决方案3】:

无法检查设备是否有 GPS 模块,或者是否通过浏览器的 API 启用了它。例如,您的笔记本电脑会尝试根据 IP 地址估计位置,但准确度很差。

但是,您可以使用对许多应用程序来说可能足够好的技巧:不要使用 getCurrentPosition(),而是使用带有 options 对象 { enableHighAccuracy: true }watchPosition() 函数并设置准确度阈值测量必须达到您才能接受它,因为它很可能是基于 GPS 模块的结果。

当您开始收听 watchPosition() 并将 enableHighAccuracy 设置为 true 时会发生什么情况,如果 GPS 模块可用,API 会告诉它您正在尝试进行测量,并且在几秒钟后,精确距离将从非常高(通常为数千米 - 基于 IP 地址、手机信号塔三角测量等)变为非常低(几米 - 基于 GPS),这意味着 GPS 启动了。如果精度保持在数百或数千米,则可能意味着没有可用的 GPS 模块。

这是GeolocationCoordinates 对象的documentation(回调中的结果传递给watchPosition()),它带有accuracy 字段。我写了一个longer post,其中还包含一个代码 sn-p,展示了我如何在 React 中使用 API。

【讨论】:

    【解决方案4】:

    我在现实世界项目中实现了这个

    KMaps-API GPS.js

    <script>
    
    
    function getLocationw() {
      if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPositionw);
      } else { 
        x.innerHTML = "Something Is Wrong";
      }
    }
    
    function showPositionw(position) {
        
      lat = position.coords.latitude;
      if(lat != null){
        document.write('<center><div class="alert alert-info" role="alert"> Please Turn On Your GPS </div></center>')
      }  
     
    }
    
    getLocationw();
    
    </script>
    

    【讨论】:

      猜你喜欢
      • 2016-07-07
      • 2020-09-26
      • 1970-01-01
      • 2011-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多