Cordova地理位置插件getCurrentPosition已被弃用

时间:2015-11-23 02:35:06

标签: cordova http https geolocation ionic

我有一个离子应用程序正在尝试完全按照文档中所示使用地理位置。

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

$cordovaGeolocation.getCurrentPosition(posOptions)
  .then(function (position) {
    //  do something
  }, function(err) {
    console.log(err);
    // error
  });

但是现在它已经停止工作了,在控制台中给了我这个警告。

  

getCurrentPosition()和watchPosition()在不安全的来源上已弃用,将来会删除支持。您应该考虑将应用程序切换到安全的来源,例如HTTPS。有关详细信息,请参阅https://goo.gl/rStTGz

这似乎是对w3c规范的一个巨大变化我很惊讶没有很多关于它的文档。任何人都可以告诉我这里缺少什么。

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

我正在浏览器上测试应用程序,并在ios设备上测试cordova应用程序。

2 个答案:

答案 0 :(得分:2)

在Chrome浏览器中测试您的应用时,只需将应用网址(通常为192.xxx.xxx.xxx:3000)更改为localhost:3000

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

答案 1 :(得分:1)

我直接使用HTML5地理位置。但是,cordova插件只是它的角度包装,正如他们所说in this Stack Overflow answer

显然浏览器无法再使用http页面中的地理位置。但对于离子来说,这只是对于livereload的问题。 There是使用http-proxy描述的一些解决方法,可以在https上使用livereload。

在没有livereload的情况下在设备上运行应用程序(例如,离线运行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);
            });