2

ユーザーの電話から高精度の位置情報を取得する必要があるモバイル サイトを構築しています。HTML5 Geolocation .watchPosition 関数とenableHighAccuracy: trueを使用しています。

IOS デバイスでテストすると、このコードにより GPS がオンになり、高精度のデータ (4m) が返されますが、MotoX (kitkat) と Nexus 5 で試したところ、電話の上部バーに位置記号が表示され、精度が低下しました。返されたのは低かった(100m)。

また、www.maps.google.com でも携帯電話の GPS を初期化できない (wifi + ネットワークから推定された位置情報のみを使用する) ことはできませんが、すべてのネイティブ アプリ (Google マップ アプリを含む) はそれと携帯電話の位置情報モードを使用できます。 「高精度」に設定されています。

Wi-Fi をオンまたはオフにして、次の 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- case-for-android-gps/

于 2014-06-18T23:39:06.083 に答える
0

ここでも同じですが、高精度のhtml5地理位置情報を備えたmoto x 4.4は、クロムでGPSをオンにしません。以前は古いアンドロイドで動作していました。AndroidのネイティブAPIでGPSをリクエストするアプリを起動したところ、HTMLページで精度の高い情報が得られるようになった…これがhtml5アプリが挙動に頼り切れず離陸に苦労する理由です。

回避策: HTML5 アプリ/ページをネイティブ Android アプリにラップし、javascript 呼び出し/処理間通信を介して真の位置情報を送信します。

于 2014-06-25T07:42:50.647 に答える