【问题标题】:Cordova/Html5 geolocation slower than native geolocation?Cordova/Html5 地理定位比本地地理定位慢?
【发布时间】:2015-11-28 14:35:03
【问题描述】:

我有一个带有地理定位插件的科尔多瓦应用程序:https://github.com/apache/cordova-plugin-geolocation

我的许多用户报告说我的应用程序中的地理位置很慢(他们所说的慢是指大约 6 秒)。 他们说当我们使用 Waze 时,需要 2 秒...

我也在 SO 上找到了这篇文章: Why is HTML5 geolocation slower than native on Android?

我已经在使用 Cordova 人行横道插件:https://github.com/crosswalk-project/cordova-plugin-crosswalk-webview

但它不会改变地理位置的性能。

用户有很多不同的手机(三星、索尼、LG、...),但似乎所有手机都需要 6 秒。 我使用 EnableHighAccuracy false 以获得更好的性能。

有什么想法吗?

【问题讨论】:

  • “我的很多用户”:您是否在“良好的环境”(启用了 wifi/gsm/gps)中尝试了自己的设备?我认为这个问题是由于您的一些用户的位置不好造成的。
  • 嗨,是的,我在室内尝试了 LG G3。 Waze 获取我的位置所需的时间少了 3 倍,而且我认为他们不会无限缓存我的位置。获得位置的平均时间是多少?我也看到了这个帖子:issues.apache.org/jira/browse/CB-5977我们在欧洲,我不知道它是否起作用,但只是为了确定
  • 我见过。请记住,每个应用程序还可以采用一些缓存策略(或其他优化)来获得“更快的体验”,例如:立即使用最后缓存的位置并发出新的位置请求,完成后将更新用户位置。
  • 是的,我知道。但即使在删除缓存或重新安装应用程序时,一些原生应用程序总是很快,并且在不到 2 秒的时间内获得经纬度。我只是想知道为什么^^也许我会使用无限缓存位置的策略并在后台检索用户当前位置。所以只有第一次使用需要 6 秒,我认为没有用户会抱怨 :)
  • 运行到完全相同(6s)。似乎 Crosswalk 提供了自己的地理位置,它将覆盖插件(因此您实际上可以卸载插件 - 请参阅stackoverflow.com/questions/35489286/…)。但我不确定 crosswalk/webview 的地理定位实现是否是原因,因为我无法禁用它或强制使用地理定位插件

标签: android html cordova geolocation


【解决方案1】:

问题是在 GMS Android 发行版中实际上有 two APIs 用于地理定位。一个是system API,另一个是GMS。原生应用程序可能使用 GMS 实现,这实际上是所有使用它的应用程序的地理定位服务聚合器。这就是为什么使用此 API 可以如此快速地获得位置信息的原因。

较旧的 webViews 肯定使用 Android 系统 API,因此它们速度较慢,甚至根本无法获取位置,而其他应用程序可以。你可能想要使用这个cordova-plugin-locationservices 插件,它使用 GMS 作为位置提供者(或者一些分支,因为它现在看起来已经被废弃了)。

但是,我认为 webView 最终也使用了这个 API,因为 Android 7 及更高版本的 Chrome WebView ,所以问题最终应该会自行解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多