我发现了很多关于 GPS 坐标的问题,但没有一个确认使用移动硬件 GPS 而不是网络 GPS,如 geoLocation 等。
我的实际方法:
我正在使用 navigator.geolocation.getCurrentPosition()
,Lat/Long
来自网络,代码如下:
function getGPS(funcCallBack)
{
if (navigator.geolocation)
{
var timeoutVal = getCookie("GPSTimeout");
navigator.geolocation.getCurrentPosition(sucess
,error
,{enableHighAccuracy: true
,timeout: timeoutVal
,maximumAge: 0}
);
}
else{
alert('GPS is turned off, or was not possible to find it. Now, doing the login without localization.');
window.gpsLat = 0;
window.gpsLng = 0;
window.gpsAcc = 0;
funcCallBack();
}
function sucess(position) //sucess
{
window.gpsLat = position.coords.latitude;
window.gpsLng = position.coords.longitude;
window.gpsAcc = position.coords.accuracy;
funcCallBack();
}
function error() //error
{
window.gpsLat = 0;
window.gpsLng = 0;
window.gpsAcc = 0;
funcCallBack();
}
}
我的问题:
有时,当我登录时,我没有得到 GPS 坐标(它们变为 0),有时我得到的坐标精度超过 2,000(这不精确)。
顺便说一句,我正在数据互联网服务上测试 GPS,当我使用 Wi-Fi 连接时,它可以完美运行,准确度低于 100。
详细信息:
也许你在提示:
timeoutVal
:它是一个cookie,里面有数字5000
。funcCallBack
:继续登录操作的函数。window.gpsLat
:它是一个全局变量,包含从geoLocation
获取的Latitude
值。window.gpsLng
:它是一个全局变量,包含从geoLocation
获取的Longitude
值。window.gpsAcc
:它是一个全局变量,包含从geoLocation
获取的Accuracy
值。
我想要什么?
我想要一个 JavaScript 或 PHP 解决方案,可以从移动硬件设备、本地 GPS 而不是地理定位获取坐标,并且当本地 GPS 关闭时,要求用户将其打开。
最佳答案
您应该使用 javascript 而不是 PHP 获取位置。 PHP 只能进行 IP 查找,这是确定位置的最不准确的方法。
navigator.geolocation.getCurrentPosition()
的工作方式是使用当前可用的最准确数据。如果是移动设备,它将首先使用 GPS(如果启用),然后是 wi-fi。
如果启用了本地 GPS,javascript 将访问该数据而不是 wi-fi 数据,但如果 GPS 数据不可用,则无法阻止对 wi-fi 数据的检查。
您最好的解决方案是检查精度字段,如果它不在您满意的范围内,请要求用户启用 GPS。
或者,如果您正在构建混合应用程序,大多数框架(PhoneGap 等)都具有直接查询设备 GPS 的 API。 Use PhoneGap to Check if GPS is enabled
关于javascript - 从硬件 GPS 获取坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20422239/