繁体   English   中英

科尔多瓦地理位置插件在Android上不起作用

[英]Cordova geolocation plugin doesn't work on android

我正在使用cordova,geolocation插件在android上显示经度和纬度。 有很多与此相同的问题,所以我阅读并尝试了他们的解决方案,但无法解决问题。 下面的代码可在浏览器上完美运行。

我尝试了3种方法,第一种是:“ navigator.geolocation.watchPosition”,它在模拟器(Android Studio)中返回错误的结果(37.42,-122.08),并且在设备中不返回任何内容。

我还尝试了将“ enableHighAccuracy”都设置为“ true”和“ false”的“ navigator.geolocation.getCurrentPosition”,并且收到超时错误警报。

当我删除deviceready时,我没有得到timeOut,这三种方法的结果都是错误的。

 (function (window) { document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady() { var minAccuracyInMetres = 50; var positionWatcher; positionWatcher = navigator.geolocation.watchPosition( geolocationSuccess2, geolocationError2, { maximumAge: 0, timeout: 100000, enableHighAccuracy: true }); function geolocationSuccess2(position) { // Reject if accuracy is not sufficient if (position.coords.accuracy > minAccuracyInMetres) { return; } // Only single position required so clear watcher navigator.geolocation.clearWatch(positionWatcher); alert('Latitude: ' + position.coords.latitude + '\\n' + 'Longitude: ' + position.coords.longitude + '\\n' + 'Altitude: ' + position.coords.altitude + '\\n' + 'Accuracy: ' + position.coords.accuracy + '\\n' + 'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '\\n' + 'Heading: ' + position.coords.heading + '\\n' + 'Speed: ' + position.coords.speed + '\\n' + 'Timestamp: ' + position.timestamp + '\\n'); }; function geolocationError2(error) { console.warn("Error while retrieving current position. " + "Error code: " + error.code + ",Message: " + error.message); } //2 var onSuccess1 = function (position) { alert('Latitude: ' + position.coords.latitude + '\\n' + 'Longitude: ' + position.coords.longitude + '\\n' + 'Altitude: ' + position.coords.altitude + '\\n' + 'Accuracy: ' + position.coords.accuracy + '\\n' + 'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '\\n' + 'Heading: ' + position.coords.heading + '\\n' + 'Speed: ' + position.coords.speed + '\\n' + 'Timestamp: ' + position.timestamp + '\\n'); }; function onError1(error) { alert('code: ' + error.code + '\\n' + 'message: ' + error.message + '\\n' + 'highaccuracy: true'); } var options1 = { maximumAge: 0, timeout: 300000, enableHighAccuracy: true }; navigator.geolocation.getCurrentPosition(onSuccess1, onError1, options1); //3 var onSuccess = function (position) { alert('Latitude: ' + position.coords.latitude + '\\n' + 'Longitude: ' + position.coords.longitude + '\\n') }; function onError(error) { alert('code: ' + error.code + '\\n' + 'message: ' + error.message + '\\n' + ' high accuracy:false'); } navigator.geolocation.getCurrentPosition(onSuccess, onError, { enableHighAccuracy: false, timeout: 300 * 1000, maximumAge: 0 }); } })(window); 

我从stackoverflow中的另一个问题得到watchPosition部分。 我使用的是cordova版本:6.4.0。 我删除了插件,然后再试一次,但是没有用。 我正在测试的设备是联想平板电脑。 非常感谢。

更新:我的地理位置版本是:2.4.0重要吗???

经过两天的奋斗,我在位置设置中启用了“高精度”。 该应用程序现在可以使用!!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM