Phonegap - Android Geolocation不准确

时间:2014-11-11 12:44:45

标签: android cordova

我使用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" />

2 个答案:

答案 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);

Geolocation options