【问题标题】:Geolocation HTML5 API enableHighAccuracy:True does not force GPS to turn on om Android devicesGeolocation HTML5 API enableHighAccuracy:True 不会强制 GPS 打开 om Android 设备
【发布时间】:2014-08-09 09:27:41
【问题描述】:

我正在构建一个需要从用户手机获取高精度位置的移动网站。 我使用 HTML5 Geolocation .watchPosition 函数和 enableHighAccuracy: true

在 IOS 设备上测试时,代码强制 GPS 打开并返回高精度数据 (4m),但当我尝试使用 MotoX (kitkat) 和 Nexus 5 时,位置符号 出现在手机顶栏,返回精度低(100m)。

我还注意到,即使是 www.maps.google.com 也无法初始化我手机的 GPS(仅使用从 wifi+网络推断的位置),尽管所有本地应用程序(包括 Google 地图应用程序)都可以使用它,而且我的手机的定位模式设置为“高精度”。

我在以下打开和关闭 wifi 的 Android 浏览器上对此进行了测试,结果相同: -铬合金, -歌剧经典 -歌剧 -海豚

我的 JS conde:

navigator.geolocation.watchPosition(success,fail,
        { enableHighAccuracy: true,
         //timeout: 100000,
        //maximumAge: 0 
        });

成功函数为:

function success(pos) {// Location was found
        //set global variables with coordinates
        globalLat=pos.coords.latitude;
        globalLng=pos.coords.longitude;
        $("#precision").html=pos.coords.accuracy;
        alert(pos.coords.accuracy);
        //create google location from coordinates
        latlng=new google.maps.LatLng(globalLat, globalLng);
        //send location to server and get response every 6 seconds;
        setInterval(function(){SendAndGetLocation();}, 6000);
        //create map or update it's center in case it was already created
        if(googleMap===undefined){
            createMap();
        }else{
            googleMap.setCenter(latlng); 
        }
        //Draw user's location on map
        drawLocalMarker(globalLat, globalLng);
    }

谁能想到会发生什么?

干杯

【问题讨论】:

  • 嗨,我也有同样的问题。你碰巧找到解决方案了吗?

标签: javascript android gps w3c-geolocation


【解决方案1】:

不要被 GPS 误导,我的意思是不要假设它会给你准确的结果,考虑应用程序被墓碑或设备进入睡眠状态,在这种情况下,网络提供商的准确性有时会更高准确,我自己也在做类似的事情,因此放弃了高精度

http://www.andygup.net/how-accurate-is-html5-geolocation-really-part-2-mobile-web/ 和这个 http://www.andygup.net/six-most-common-use-cases-for-android-gps/

【讨论】:

  • 谢谢 Saj,也许我应该重新考虑在我的应用程序上使用高精度。作为更新,我刚刚在运行 ICS 的 S2 设备上进行了测试,它工作正常(GPS 被强制激活),因此显然这是特定设备或 Kitkat 的问题,它避免了浏览器使用 GPS 数据。
【解决方案2】:

同样,具有高精度 html5 地理位置的 moto x 4.4 在 Chrome 中无法打开 GPS。 它曾经在较旧的android上工作。 当我启动使用 android native api html page 请求 gps 的应用程序时,开始获取高精度信息......这就是为什么 html5 应用程序很难起飞,因为我们不能依赖行为

解决方法:我会将(chromium webview)html5 应用程序/页面包装到本机 android 应用程序,并通过 javascript 调用/处理间通信发送真实的地理位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-19
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 2013-01-26
    • 1970-01-01
    • 2015-04-09
    相关资源
    最近更新 更多