我正在使用带有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;
}
答案 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。