2

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

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

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

我在以下打开和关闭 wifi 的 Android 浏览器上对此进行了测试,结果相同:-Chrome、-Opera Classic -Opera -Dolphin

我的 JS 康德:

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);
    }

谁能想到会发生什么?

干杯

4

2 回答 2

1

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

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

于 2014-06-18T23:39:06.083 回答
0

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

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

于 2014-06-25T07:42:50.647 回答