Visual Studio Android 模拟器和位置随 Apache Cordova 发生变化

Visual Studio Android emulator and Location changes with Apache Cordova

我正在 Visual Studio 中开发 Cordova 应用程序,并且正在使用最新版本的 Apache Cordova 工具。

我在使用 VS 模拟器和附加工具的位置部分时遇到问题。

我添加了一堆地理点并让它们在列表中自动循环,但是从 here 下载的地理定位插件没有接受它。

我也在 运行ning iOS 上尝试过它,您可以在其中选择一些预定义的场景(运行、自行车、高速公路)并且它在那里按预期工作。

是否需要勾选 off/enable/whatever 才能让插件在模拟器上也能在 Android 上运行?

编辑: 这是我用来检查位置变化的一段代码:

 var watchPosition = function(success, error) {
    watchId = navigator.geolocation.watchPosition(success, error, { timeout: 30000 });
};

这在 iOS 模拟器中工作正常,但在 VS Android 模拟器中不起作用 它甚至在 Ripple 中工作正常(有时需要 10-15 秒才能注册位置更改)

您可能想尝试清除 Cordova 缓存。 在 VS 中:工具->选项、Apache Cordova 工具和清除 Cordova 缓存。

您也可以尝试清除 Ripple 使用的 Chrome 用户目录,以防万一 cookie 集破坏了 cordova 插件。您可以通过删除此文件夹来执行此操作:%AppData%\Microsoft\VisualStudio\MDA\RPL_UserData

我还建议您将适用于 Apache Cordova 的 VS 工具更新到 here

的最新版本

此外,您可以试试这个教程 - 我不确定它是否有帮助但值得一试 - http://docs.telerik.com/platform/samples/Sample-Geolocation/

尝试使用不同的模拟器。 VS 提供的仿真器在某些情况下往往无法正常工作,因此请从 VS 以外的其他提供商下载外部 Android 仿真器。

我推荐 Genymotion Android 模拟器 - 易于使用且加载速度相当快:https://www.genymotion.com

关于如何在 Visual Studio 中使用 Genymotion 的视频教程:
https://www.youtube.com/watch?v=imDT6hIyKc4

感谢你们的尝试,但最终证明有更简单(也更令人沮丧?)的解决方案。

我再次阅读了地理定位插件的文档,并阅读了一个名为 enableHighAccuracy

的选项

我试了一下,我的 watchPosition 函数现在看起来像这样

navigator.geolocation.watchPosition(onSuccess, onError, { 
    timeout: 30000,
    enableHighAccuracy: true 
});

现在它就像一个魅力。希望这会帮助其他有需要的人:)