检查用户设备的 GPS 是不是开启

Posted

技术标签:

【中文标题】检查用户设备的 GPS 是不是开启【英文标题】: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;

【问题讨论】:

***.com/questions/843675/… 也直接谷歌搜索我得到了这个developer.appcelerator.com/question/148315/… ***.com/questions/6092400/… 谢谢@bhargav。我认为问题和答案属于JAVA。 PHP 并不完美。所以我想要一个javascript 【参考方案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>

【讨论】:

以上是关于检查用户设备的 GPS 是不是开启的主要内容,如果未能解决你的问题,请参考以下文章

如何检查用户的设备是不是支持和授权 iBeacon 使用以及是不是开启了蓝牙?

react-native 中的设备 GPS 配置

提示后检查用户是不是启用了 GPS

ReactNative:如何检查用户是不是已授予 gps 权限

Xamarin iOS App 检查 GPS 是不是启用或提示用户

监控 GPS 状态(如果用户使用通知栏关闭 GPS,则无法检查)