Geolocation HTML5 enableHighAccuracy True,False还是Best Option?

Erh*_* H. 12 html5 geolocation

我有关于HTML5地理定位功能的问题.我使用下面的代码来获取位置数据.我使用"enableHighAccuracy:false"选项来使用基于Cell的GPS功能.准确度很低但响应速度太快.但有些人总是在手机上使用内置GPS,因此这段代码对他们不起作用.如果我将accurency选项更改为"enableHighAccuracy:true",则它适用于他们.但这次,代码仅使用内置GPS.不是基于CELL的GPS.

问题 - >我怎么能这样做:首先,尝试从内置GPS获取超时(例如5000ms)的位置如果此时无法获得位置只需查找基于单元格的位置超时(例如10000ms)如果位置不能在这个时候得到,返回一条错误信息.

这是我现在使用的代码.

提前致谢.

    function getLocationfromGoogle() {
    navigator.geolocation.getCurrentPosition(
      function(pos) {
        $("#lat_field").val(pos.coords.latitude);
        $("#long_field").val(pos.coords.longitude);
        var geocoder = new google.maps.Geocoder();
        var latLng = new google.maps.LatLng(pos.coords.latitude,pos.coords.longitude);
              geocoder.geocode({ 'latLng': latLng}, function (results, status) {
              if (status == google.maps.GeocoderStatus.OK) {
                //console.log(results[0].formatted_address);
                $("#adresim").val(results[0].formatted_address);
                }
                else {
            alert('Google convertion is not succesfully done.');  

            }
            });
      },function error(msg){

                alert('Please enable your GPS position future.');  

      },{maximumAge:600000, timeout:5000, enableHighAccuracy: false}

    ); 
    }
Run Code Online (Sandbox Code Playgroud)

Kev*_*vin 22

您还应该知道,从手机操作系统到手机操作系统的实现方式各不相同 - 适用于Android的功能可能适用于iOS,BlackBerry,WindowsPhone等,也可能不适用.

你快到了,你只需要:

  1. 指定enableHighAccuracy: true(您将其设置为false)
  2. 处理错误处理程序中的超时错误情况.如果来自高精度查询的错误是超时,则再次尝试使用enableHighAccuracy: false.

看看这个示例代码.

您还应该注意,在几台设备上测试时,它会返回从WiFi派生的位置,即使在enableHighAccuracy: true.

  • http://jsfiddle.net/CvSW4/761/在错误处理中用错误对象替换了位置对象 (3认同)

pea*_*rth 6

这里提到的代码:http://jsfiddle.net/CvSW4/在错误处理期间对我不起作用.

原因是错误函数接受名为"position"的参数,但在名为"error"的函数中使用了一个对象.

function errorCallback_highAccuracy(position) { ... }
function errorCallback_lowAccuracy(position) { ... }
Run Code Online (Sandbox Code Playgroud)

解决这个问题的方法是切换错误方法以接受输入值作为名为'error'的参数而不是'position',因为错误回调不接受位置而是抛出错误对象.

function errorCallback_highAccuracy(error) { ... }
function errorCallback_lowAccuracy(error) { ... }
Run Code Online (Sandbox Code Playgroud)

我在这里提到它,因为我无法在结果示例页面上发布,而且,这是我通过链接查找上面提到的代码示例的位置.