我使用带有PhoneGap Build的cordova 2.9.0.我写了一个应用程序,用户可以在特殊时间登记特殊位置.我的问题是,当我在各种设备上安装de app时,我总会得到一个时间(这只发生在Android设备上).当我重新启动设备时,地理定位工作,我得到了gps数据.现在我想知道是否有其他方法可以解决这个问题.我在deviceReady函数中的地理定位代码是:
var geo = cordova.require('cordova/plugin/geolocation');
var optionsGeo = {maximumAge: 0, timeout: 30000, enableHighAccuracy: false};
var watchID = geo.watchPosition(onSuccessGeo, errorGeo, optionsGeo);
function onSuccessGeo(position) {
lat = (position.coords.latitude).toFixed(6);
lon = (position.coords.longitude).toFixed(6);
accuracy = (position.coords.accuracy).toFixed(0);
console.log("Lat " + lat + " Lon " + lon + " & " + accuracy + "m");
}
function errorGeo(error) {
console.log("Geo-Fehler! Code: " + error.code + " Nachricht: " + error.message);
}
Run Code Online (Sandbox Code Playgroud)
我尝试过不同的超时值和启用的HighAccuracy - 但没有任何帮助.谢谢.
我也遇到过这个问题,主要是三星 Android 设备。我发现的是:
如果您的设备中没有安装 SIM 卡,则不会有 GPS 坐标(仅适用于某些设备)。
请确保您已<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />在 Android 清单中进行设置。
您应该设置enableHighAccuracy:true请参阅下面我的设置:
var options = {maximumAge: 0, timeout: 10000, enableHighAccuracy:true};
navigator.geolocation.getCurrentPosition(onSuccess, onError, options);
enableHighAccuracy提供了应用程序希望收到最佳结果的提示。默认情况下,设备将尝试使用基于网络的方法检索位置。将此属性设置为 true 告诉框架使用更准确的方法,例如卫星定位。
在某些情况下,开发人员使用geolocation.watchPosition来获得更准确的 GPS 结果。你也可以尝试一下吗?
我希望它有帮助!