【发布时间】:2013-12-06 11:01:31
【问题描述】:
我发现了很多关于 GPS 坐标的问题,但没有一个确认使用移动硬件 GPS 而不是像 geoLocation 之类的 Web GPS。
我的实际方法:
我用的是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 解决方案,可以从移动硬件设备获取坐标,即 Native GPS,而不是地理位置,当 Native GPS 关闭时,要求用户打开它。
【问题讨论】:
-
有时,当 GPS 对您特定位置上方的卫星阵列“预热”时,前几个读数会参差不齐。您还可以检查 watchPosition() 上的返回频率以检测 gps/wifi:wifi 不会经常更新,但 gps 有点嘈杂。
-
正如 eddiec 在他回答的最后几行中所建议的那样,如果您正在构建一个移动应用程序,您应该绝对使用像 PhoneGap 这样的框架,它在大多数情况下都提供完整的或半完全访问本地 GPS 实现。使用内置浏览器解决方案是一个弱点子。顺便说一句:不要混淆——PhoneGap API 具有与 Geolocation 对象相同的函数名称,例如浏览器中的 Geolocation (HTML5),但在其背后支持更充分的原生 GPS 实现。
标签: javascript php android geolocation gps