地理定位HTML5支持HighAccuracy True、False或Best Option



我有一个关于HTML5地理定位功能的问题。我使用下面的代码来获取位置数据。我使用"enableHighAccuracy:false"选项来使用基于蜂窝的GPS功能。指责很低,但反应太快。但有些人总是在手机上使用内置GPS,所以这个代码对他们不起作用。但是,如果我将accurcy选项更改为"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}
    ); 
    }

您还应该注意,这一功能的实现因手机操作系统而异-在Android上工作的功能可能在iOS、BlackBerry、WindowsPhone等上工作,也可能不工作。

你就快到了,你只需要:

  1. 指定enableHighAccuracy: true(您已将其设置为false
  2. 在错误处理程序中处理超时错误情况。如果高精度查询的错误是超时,请使用enableHighAccuracy: false重试

看看这个示例代码。

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

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

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

function errorCallback_highAccuracy(position) { ... }
function errorCallback_lowAccuracy(position) { ... }

解决此问题的方法是切换错误方法,将输入值作为名为"error"而非"position"的参数接受,因为错误回调不接受位置,而是抛出错误对象。

function errorCallback_highAccuracy(error) { ... }
function errorCallback_lowAccuracy(error) { ... }

我在这里提到它,因为我无法在生成的示例页面上发布,而且,这是我链接到上面提到的代码示例的位置。

相关内容

最新更新