ユーザーの電話から高精度の位置情報を取得する必要があるモバイル サイトを構築しています。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);
}
誰が何が起こっているのか考えられますか?
乾杯