从硬件GPS获取坐标

我发现很多关于GPS坐标的问题,但是没有一个确认使用移动硬件GPS而不是像geoLocation之类的networkingGPS。

我的实际方法是:

我使用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(); } } 

我的问题:

有时,当我做login时,我没有得到GPS坐标(他们来了0),有时我得到的坐标超过2000精度(这是不准确的)。

顺便说一下,我正在testing数据互联网服务上的GPS,当我使用Wi-Fi连接时,它的精确度低于100。

细节:

也许你在抱怨:

  1. timeoutVal :它是一个数字5000的cookie。
  2. funcCallBack :它是一个继续login操作的函数。
  3. window.gpsLat :它是一个包含从geoLocation获得的Latitude值的全局variables。
  4. window.gpsLng :它是一个全局variables,包含从geoLocationLongitude值。
  5. window.gpsAcc :它是一个包含从geoLocation获得的Accuracy值的全局variables。

我想要什么?

我想要一个JavaScriptPHP的解决scheme,可以从移动硬件设备,本地GPS,而不是地理位置坐标,当本机GPSclosures时,要求用户打开它。

Solutions Collecting From Web of "从硬件GPS获取坐标"

你应该得到的位置与JavaScript不PHP。 PHP只能进行IP查找,这是确定位置的最不准确的方法。

navigator.geolocation.getCurrentPosition()工作方式是使用当前可用的最准确的数据。 在移动设备的情况下,它将首先使用GPS,如果启用,然后无线networking。

如果启用了原生GPS,那么javascript将访问该数据而不是Wi-Fi数据,但是如果GPS数据不可用,则无法防止对Wi-Fi数据进行检查。

您的最佳解决scheme是检查精度字段,如果它不在一个范围内,您可以要求用户启用GPS。

另外,如果你正在构build一个混合应用程序,大部分框架(PhoneGap。等)都有API来直接查询设备的GPS。 使用PhoneGap来检查GPS是否启用

地理位置API并没有公开直接的方式来检查GPS是打开还是closures,但是您可以捕获地理位置的错误,并根据错误types可以从那里得出结论。

例如POSITION_UNAVAILABLE(2)如果networkingclosures或定位卫星不能联系。 但不知道你必须处理一些条件的短路!

我会build议使用watchPostion {我同意它的意思是观看和连续定位}你可以保持它,如果GPS抛出错误,你可以提示自定义提醒,使用户打开GPS设备/无线上网/互联网..如果它来成功callback你可以清除手表。

  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();