【问题标题】:Geolocation HTML5 enableHighAccuracy True , False or Best Option?地理位置 HTML5 enableHighAccuracy True 、 False 还是最佳选项?
【发布时间】:2012-02-21 14:54:04
【问题描述】:

我对 HTML5 地理定位功能有疑问。我使用下面的代码来获取位置数据。我使用“enableHighAccuracy: false”选项来处理基于蜂窝的 GPS 功能。准确率低,但反应太快。但是有些人总是在手机上使用内置 GPS,所以这个代码对他们不起作用。但是,如果我将准确性选项更改为“enableHighAccuracy:true”,它适用于他们。但这一次,代码只使用了内置 GPS。不是基于 CELL 的 GPS。

问题 -> 我该怎么做:首先,如果此时无法获得位置,请尝试通过超时(例如 5000 毫秒)从内置 GPS 获取位置,只需查找基于单元的位置以进行超时(例如 10000 毫秒)如果此时无法获取位置,则返回错误消息。

这是我现在使用的代码。

提前致谢。

    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}

    ); 
    }

【问题讨论】:

    标签: html geolocation


    【解决方案1】:

    您还应该知道,此功能的实现因手机操作系统而异 - 适用于 Android 的功能可能适用于 iOS、黑莓、WindowsPhone 等,也可能不适用。

    你就快到了,你只需要:

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

    看看这个sample code

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

    【讨论】:

    【解决方案2】:

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

    原因是错误函数接受一个名为“位置”的参数,但在函数中使用了一个名为“错误”的对象。

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

    解决此问题的解决方案是切换错误方法以接受输入值作为名为“错误”而不是“位置”的参数,因为错误回调不接受位置并抛出错误对象。

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

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

    【讨论】:

    • 这个根本问题还存在吗?我无法重现此问题
    猜你喜欢
    • 2013-07-22
    • 2014-12-26
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多