gpt4 book ai didi

android - Cordova 地理定位精度上限为 10 米

转载 作者:IT老高 更新时间:2023-10-28 23:14:45 28 4
gpt4 key购买 nike

更新:这是一个 Google Play 服务问题,内部报告 here将从版本 13.4.0 开始修复

我们使用 cordova gelocation plugin以及带有选项 enableHighAccuracy: true 的方法 navigator.geolocation.watchPosition() 来跟踪用户位置并获得最准确的结果。

我们的应用程序已经存在 1 年多了,过去我们可以毫无问题地使用任何设备来获得非常好的定位精度,户外时 4/6 米,天空晴朗。

最近,我们的许多用户报告说,无论他们做什么,都无法获得低于 10m 的精度。

我们决定自己测试它,我们发现有同样的问题。最初,我们认为我们在最新版本中引入了一些错误,我们对所有内容进行了三次检查,但我们没有对涉及地理位置的代码/依赖项进行任何更改。

我们还测试了我们应用的旧版本,我们确信可以达到 4m 的精度,但令人惊讶的是它们也不起作用,精度上限为 10m。

我们尝试了不同版本的 Android,我们可以在从 5( Lollipop )到 8(奥利奥)的任何平台上重现该问题。我们在 iOS 10/11 上也有同样的问题。同样,我们已经有几个月没有更新该应用了。

最近有一个关于同一问题的问题 here :

其他人在使用 Android 原生代码时遇到了同样的问题 here

有人知道发生了什么吗?是权限问题吗?定位服务也设置为高精度。

为了完整起见,我们可以使用 plugin 的旧版本 (2.x) 获得 3/4 米的精度

这是唯一的出路吗?

我们宁愿不为开箱即用的运行良好的东西引入额外的依赖项。

非常感谢

最佳答案

看源码:

旧插件 (2.x) Source :

  watchPosition: function(success, error, args) {
var win = function() {
var geo = cordova.require('cordova/modulemapper').getOriginalSymbol(window, 'navigator.geolocation');
geo.watchPosition(success, error, {
enableHighAccuracy: args[1]
});
};
exec(win, error, "Geolocation", "getPermission", []);
},

新插件(主)Source :

watchPosition: function(success, error, args) {
var pluginWatchId = utils.createUUID();

var win = function() {
var geo = cordova.require('cordova/modulemapper').getOriginalSymbol(window, 'navigator.geolocation');
pluginToNativeWatchMap[pluginWatchId] = geo.watchPosition(success, error, args);
};

var fail = function() {
if (error) {
error(new PositionError(PositionError.PERMISSION_DENIED, 'Illegal Access'));
}
};
exec(win, fail, "Geolocation", "getPermission", []);

return pluginWatchId;
},

在 OLD 插件代码中,enableHighAccuracy 是由 (arg1 of array) 设置的 bool 值。

使用新版本的插件,您需要将 arg 作为 JSON 传递并设置该标志:{enableHighAccuracy: true} 以重现对 geo.watchPosition 函数的相同调用准确性。

老路:

navigator.geolocation.watchPosition(geolocationSuccess,
geolocationError,
[false,true]);

新方式:

navigator.geolocation.watchPosition(geolocationSuccess,
geolocationError,
{ enableHighAccuracy: true });

关于android - Cordova 地理定位精度上限为 10 米,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49348489/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com