【问题标题】:Meteor on android device can't get GPS positionAndroid 设备上的 Meteor 无法获取 GPS 位置
【发布时间】:2016-01-30 07:33:16
【问题描述】:

我有一个在 Meteor + ionic 中完成的移动应用程序,我正在尝试使用这个简单的代码获取用户 GPS 位置:

navigator.geolocation.getCurrentPosition( function ( result ) {
    console.log( result );
    Session.set( 'pos', result );
}, function ( err ) {
    console.log( err );
});

我得到的只是一条警告,说 getCurrentPosition 在不安全的位置已弃用。

为什么我的应用程序被视为不安全的位置,因为我使用 meteor run android-device 运行它,它基本上将它安装在我的手机上,然后像任何其他应用程序一样运行它?

如果我打开 chrome 检查器并控制应用程序的浏览器,我可以将 url 从 http://meteor.local 切换到 https://meteor.local 使其成为“安全位置”,但是当getCurrentPosition 被触发时,我得到的只是超时错误。

那么...如何在流星移动应用程序中获取用户的位置?

【问题讨论】:

标签: android cordova meteor ngcordova


【解决方案1】:

根据documentation,您需要使用cordova 地理定位插件。我相信这是因为 cordova 使用的 webview 可能不具备您手机上 chrome 的所有功能——这是一个自然但错误的假设。

根据geolocation plugin readme需要添加插件:

meteor add mdg:geolocation.

然后你可以使用:

Geolocation.currentLocation()

可能有一种方法可以使用navigator.geolocation 来完成这一切,但是如果您使用通过插件提供的本机功能,那么您无需担心浏览器中的安全问题。它还将确保事情可以在可能使用尚未实现地理 API 的 web 视图版本的旧设备上运行。

【讨论】:

  • 我已经安装好了。如果你查看它的源代码,它使用来自 navigator 的相同代码。
【解决方案2】:

我在使用 navigator.geolocation 时遇到了同样的问题。似乎永远不会触发错误函数,因为超时默认值实际上是无穷大。解决它实际上是设置一个最小超时值。

navigator.geolocation.getCurrentPosition(success,error,{timeout:5000});

【讨论】:

    猜你喜欢
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多