检查用户设备的 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 使用以及是不是开启了蓝牙?
ReactNative:如何检查用户是不是已授予 gps 权限