Cordova地理位置插件getCurrentPosition已弃用

Cordova地理位置插件getCurrentPosition已弃用,cordova,http,https,geolocation,ionic,Cordova,Http,Https,Geolocation,Ionic,我有一个ionic应用程序,它正试图完全按照文档所示使用地理位置 var posOptions = {timeout: 10000, enableHighAccuracy: true}; $cordovaGeolocation.getCurrentPosition(posOptions) .then(function (position) { // do something }, function(err) { console.log(err); // err

我有一个ionic应用程序,它正试图完全按照文档所示使用地理位置

var posOptions = {timeout: 10000, enableHighAccuracy: true};

$cordovaGeolocation.getCurrentPosition(posOptions)
  .then(function (position) {
    //  do something
  }, function(err) {
    console.log(err);
    // error
  });
但是现在它已经停止工作了,控制台给了我这个警告

getCurrentPosition()和watchPosition()在不安全的来源上不推荐使用,将来将删除支持。您应该考虑将应用程序切换到安全的原点,例如HTTPS。有关更多详细信息,请参阅

这似乎是对w3c规范的一个巨大改变,我只是很惊讶没有太多关于它的文档。谁能告诉我我在这里错过了什么

该应用程序在手机上运行,因此它可以自然地在本地主机上进行监听。它通过http而不是https与服务器通信,但我不明白为什么这会影响获取地理坐标


我正在浏览器上测试该应用程序,并将其作为cordova应用程序在ios设备上进行测试

我直接使用HTML5地理定位。但正如他们所说,cordova插件只是它上面的角包装

显然,浏览器不能再从http页面使用地理定位了。但对于爱奥尼亚来说,这只是利弗雷罗德的问题。是使用http代理让livereload在https上工作的一些变通方法

在没有livereload的设备上运行应用程序(即“ionic run android”末尾没有“-l”)效果良好

记住在deviceready事件之后运行getCurrentPosition。对我来说,这个在其中一个控制器中工作:

            document.addEventListener("deviceready", function () {
            console.info('deviceready fired!');
            window.navigator.geolocation.getCurrentPosition(function(position) {
                console.info('Location from Cordova:');
                console.info("Latitude: " + position.coords.latitude + "; Longitude: " + position.coords.longitude);
            });

在chrome浏览器中测试应用程序时,只需将应用程序url(通常为192.xxx.xxx.xxx:3000)更改为localhost:3000


您需要确保您的媒体策略支持该策略,但不会出现安全错误。

是否在浏览器上进行测试?google chrome上的非https网站将不推荐地理定位,但这不会影响cordova应用程序。我在浏览器上测试了它,作为cordova应用程序中的ios应用程序,html文件是本地安装的还是显示远程网站?该网站是否使用http或https?本地安装。我认为默认情况下,ionic构建使用http。但它是本地的,所以这不重要,不是吗?