在Android上,当其他应用程序在大多数时间内立即返回某个位置并且几乎从不超过2秒时,Cordova的地理位置插件一直需要大约6秒来修复位置。
我发现了这篇文章Phonegap geolocation sometimes not working on android,并按照说明删除了地理位置插件:
cordova plugin rm cordova-plugin-geolocation
要验证插件已被删除,我使用ionic run android
再次运行应用程序,期望以下调用失败
var posOptions = {enableHighAccuracy: false, timeout: 10000};
$cordovaGeolocation
.getCurrentPosition(posOptions)
.then(function (position) {
return new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
}, function() {
$cordovaToast.showLongCenter('Could not get current location. Is GPS Enabled?');
});
但它的工作方式和以前完全一样。所以我添加并删除了Android平台,认为该插件可能被缓存:
cordova platform rm android
cordova platform add android
cordova plugin list
com.tiltshiftfocus.cordova.plugin.clearCache 1.0.5 "Clear Cache"
cordova-plugin-camera 2.1.0 "Camera"
cordova-plugin-crosswalk-webview 1.5.0 "Crosswalk WebView Engine"
cordova-plugin-device 1.1.0 "Device"
cordova-plugin-file 3.0.0 "File"
cordova-plugin-file-transfer 1.4.0 "File Transfer"
cordova-plugin-statusbar 2.0.0 "StatusBar"
cordova-plugin-whitelist 1.2.1 "Whitelist"
cordova-plugin-x-toast 2.4.0 "Toast"
ionic-plugin-keyboard 1.0.8 "Keyboard"
plugin.google.maps 1.3.9 "phonegap-googlemaps-plugin"
我还清除了webview缓存以防万一
$ionicPlatform.ready(function () {
window.cache.clear();
...
}
但它仍然像以前一样运行。为什么我的应用仍然能够在没有插件的情况下成功获得$cordovaGeolocation.getCurrentPosition
的位置?它是否使用webview的地理定位服务而不是插件?如何判断它使用的是哪种服务,因为我怀疑应用程序没有使用该插件,这可能是导致gps缓慢修复的原因。
我对应用程序进行了一些文本和代码更改,以查看是否有任何更改被反映,以及新文本&代码确实出现了。在运行ionic run android
之前,我甚至从设备上完全卸载了应用程序,但地理定位仍然有效。
答案 0 :(得分:1)
插件文档说
此API基于W3C地理位置API规范,仅在尚未提供实施的设备上执行。
由于Android设备太多我无法测试,因此只需插入插件即可。
对于6秒vs 2秒,如果没有看到他们的代码,很难评估其他应用正在做什么。他们可能正在使用缓存位置等。