从硬件GPS获取坐标

Get coordinates from Hardware GPS

本文关键字:坐标 获取 GPS 硬件      更新时间:2024-04-12

我发现了很多关于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。

详细信息:

也许你在抱怨:

  1. timeoutVal:它是一个cookie,里面有数字5000
  2. funcCallBack:它是一个继续登录操作的函数
  3. window.gpsLat:它是一个全局变量,包含从geoLocation得到的Latitude
  4. window.gpsLng:它是一个全局变量,包含从geoLocation得到的Longitude
  5. 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();