Android设备上的Meteor无法获得GPS位置

时间:2015-10-29 23:30:10

标签: android cordova meteor ngcordova

我在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检查器并控制应用程序的浏览器,我可以将网址从http://meteor.local切换到https://meteor.local,使其成为“安全位置”,但我得到的只是{{{{ 1}}被解雇了。

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

2 个答案:

答案 0 :(得分:0)

根据documentation您需要使用cordova地理定位插件。我相信这是因为cordova使用的webview可能没有你手机上的所有Chrome功能 - 这是一个自然而错误的假设。

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

meteor add mdg:geolocation.

然后你可以使用:

Geolocation.currentLocation()

可能有一种方法可以使用navigator.geolocation完成所有操作,但如果您使用通过插件提供的本机功能,那么您不必担心浏览器中的安全性问题。它还将确保在可能使用尚未实现地理API的webview版本的旧设备上运行。

答案 1 :(得分:0)

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

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