从硬件GPS获取坐标
Get coordinates from Hardware GPS
我发现了很多关于GPS坐标的问题,但没有一个问题能证实使用移动硬件GPS而不是像geoLocation之类的网络GPS。
我的实际方法:
我使用的是navigator.geolocation.getCurrentPosition()
,Lat/Long
来自Web,代码如下:
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),有时我得到的坐标精度超过2000(这并不精确)。
顺便说一句,我正在数据互联网服务上测试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关闭时,请用户打开它。
您应该使用javascript而不是PHP来获取位置。PHP只能进行IP查找,这是确定位置的最不准确的方法。
navigator.geolocation.getCurrentPosition()
的工作方式是使用当前可用的最准确的数据。在移动设备的情况下,如果启用GPS,它将首先使用GPS,然后使用wi-fi。
如果启用了本地GPS,javascript将访问该数据而不是wi-fi数据,但如果GPS数据不可用,则无法阻止对wi-fi数据的检查。
你最好的解决方案是检查精度字段,如果它不在你满意的范围内,请用户启用GPS。
或者,如果你正在构建一个混合应用程序,大多数框架(PhoneGap等)都有直接查询设备GPS的API。使用PhoneGap检查GPS是否已启用
Geolocation API并没有公开一种直接的方法来检查GPS是打开还是关闭,但您可以捕捉到地理定位的错误,并根据错误类型从中得出结论。
例如,POSITION_UNAVAILABLE(2),如果网络中断或无法联系到定位卫星。但这并不是你必须处理某些情况的捷径!
我建议使用watchPostion{我同意它是用来观察和连续定位的}你可以保持它,如果GPS抛出错误,你可以提示自定义警报,让用户打开GPS设备/无线网络/互联网。。如果回调成功,你可以清空手表。
var watch =null;
function success(position)
{
var lat = position.coords.latitude;
var lon= position.coords.longitude;
if (watch != null )
/*Need to take care .. as maybe there is no gps and user
want it off so keep attempt 3 times or some kind a way out otherwise it will
infinite loop */
{
navigator.geolocation.clearWatch(watch);
watch = null;
}
}
function getLatLon()
{
var geolocOK = ("geolocation" in navigator);
if ( geolocOK )
{
var option = {enableHighAccuracy:true, maximumAge: 0,timeout:10000 };
watch = navigator.geolocation.watchPosition(success, fails, option);
}
else {
//disable the current location?
}
}
function fails()
{
alert("please turn on the GPS !");
}
getLatLon();
- 在谷歌地图上获取事件的x,y坐标
- 如何在JS Leatflet绘图插件中获取圆的坐标
- 点击(右键点击)使用传单地图库获取图像覆盖的像素坐标
- HTML5获取弧的坐标's结束
- 如何在OpenLayers中获取动态绘制的多边形的坐标
- 获取用户位置并将坐标保存在数据库中
- 通过鼠标点击获取X和Y坐标(javascript)
- 使用jQuery获取用户坐标
- 当鼠标停止或改变方向时获取鼠标坐标
- 谷歌地图:获取点击或标记(x,y)像素坐标内的标记点击侦听器
- 无法获取表单's面板的x和y坐标,并在加载时从cookie中设置它们
- 获取在谷歌地图上点击的任何点的坐标
- 如何使用Google Places Javascript API搜索附近的位置(自动从浏览器获取坐标)
- 在动画运行时获取矩形的坐标
- 从 X 和 Y 坐标获取纬度和经度
- 如何将 JS 鼠标坐标获取到 PHP 插入查询中
- 谷歌地图v3从坐标获取地名/地址
- 通过坐标获取子元素
- 如何在WebGL 3d空间中从鼠标点击坐标获取对象
- 根据x和y坐标获取表's单元格的值