我使用cordova
// Platform: android
// 3.5.1
当我使用Geolocation
时var options = {enableHighAccuracy: true};
navigator.geolocation.getCurrentPosition(that.geoSuccess, that.geoError, options);
this.geoSuccess = function(position) {
console.log("geoSuccess :"+position.coords.latitude+", "+ position.coords.longitude)
that.mylocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
};
我进入日志:
31.4956033, 34.9326514
距我实际位置3.7公里。
知道为什么吗?或者如何解决?
在ios上我得到以下职位:31.518463052524, 34.90405467862522
这是我的实际位置,因此代码是正确的。
当我使用谷歌地图(在Android设备上)时,我的位置是正确的,因此它不是硬件问题。
在我的清单中我有:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
答案 0 :(得分:1)
我也注意到了这个问题。但是,当我使用watchPosition查询我的位置以进行更改时,它会为我修复它。据我所知,最初的GPS修复是不准确的。给定时间它会缩短距离。
类似的东西:
watchID = navigator.geolocation.watchPosition(onSuccess, onError, options);
function onSuccess(position) {
var myLatLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
map.setCenter(myLatLng);
if(marker!=null)
marker.setMap(null);
marker = new google.maps.Marker({
position: myLatLng,
map: map,
title: 'My Location'
});
}
答案 1 :(得分:0)
您需要要求高准确度
var options = {enableHighAccuracy: true};
navigator.geolocation.getCurrentPosition(that.geoSuccess, that.geoError, options);