【发布时间】:2016-02-18 18:13:55
【问题描述】:
在 Android 上,Cordova 的地理定位插件始终需要大约 6 秒的时间来修复一个位置,而其他应用大部分时间会立即返回一个位置,而且几乎不会超过 2 秒。
我看到这篇帖子 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 之前从设备上完全卸载了该应用程序,但地理位置仍然有效。
【问题讨论】:
标签: android cordova geolocation ionic-framework ngcordova