检查用户设备的GPS是否已打开

时间:2014-11-25 11:48:41

标签: javascript php jquery-mobile gps

我正在使用带有PHP的jQuery Mobile开发应用程序。我没有使用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;
}

5 个答案:

答案 0 :(得分:3)

您可以在加载时调用此功能

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

答案 1 :(得分:2)

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

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

在successCallback中,我写了代码,一旦我得到了它应该做的位置,并且在错误回调中我写了一条简单的警告信息,提示用户打开GPS。

答案 2 :(得分:1)

请检查此链接以了解即使从设备设置关闭GPS,GeoLocation api仍可能返回一些lat和long值。

https://security.stackexchange.com/questions/137418/how-does-google-know-where-i-am

答案 3 :(得分:0)

我在现实世界中实施了此项目

KMaps-API GPS.js

"State 1"

答案 4 :(得分:0)

无法通过浏览器的 API 来检查设备是否具有 GPS 模块或是否启用了 GPS 模块。但是,您可以使用一个对许多应用程序来说可能足够好的技巧:不使用 getCurrentPosition(),而是使用带有 watchPosition() 对象 options{ enableHighAccuracy: true } 函数和设置测量必须达到的准确度阈值,您才能将其视为最有可能是基于 GPS 模块的结果。

当您开始收听 watchPosition() 并将 enableHighAccuracy 设置为 true 时会发生什么,如果 GPS 模块可用,API 将通知它您正在尝试获取测量值,并且几秒钟后,精度将从非常高(通常为数千米 - 基于 IP 地址、蜂窝塔三角测量等)到非常低(几米 - 基于 GPS),这意味着 GPS启动。如果精度保持在数百或数千米,则可能意味着没有可用的 GPS 模块。

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