2015-11-23 64 views
3

我有一个正在尝试使用地理位置的离子应用程序,完全如文档中所示。科尔多瓦地理位置插件getCurrentPosition不推荐使用

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规范的巨大改变我只是感到惊讶,没有很多关于它的文档。任何人都可以告诉我我在这里错过了什么。

该应用程序在手机上运行,​​因此它自然在本地主机上侦听。它正在与服务器通过HTTP没有使用https,但我不明白为什么这会影响获得地理坐标

我的浏览器和iOS设备上的应用程序科尔多瓦测试应用。

+1

您正在浏览器上测试吗?地理位置是怎么回事非HTTPS网站的谷歌浏览器中被取消,但不会影响到科尔多瓦的应用程序 – jcesarmobile

+0

是我测试浏览器和iOS应用 – Ridan

+0

在你科尔多瓦应用程序中,HTML文件在本地安装,或者显示一个遥远的网站?该网站使用http还是https? – Tom

回答

1

我直接使用HTML5地理定位。但是,科尔多瓦插件只是有角度的包装,因为他们说in this Stack Overflow answer

显然,浏览器无法再使用来自http页面的地理定位。但对于离子来说,这只是针对livereload的问题。 There是使用http-proxy在https上运行livereload的一些解决方法。

运行而不livereload上设备应用程序(即,没有在结束“-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); 
      }); 
+1

事实上,它确实会影响我们的科尔多瓦应用程序更新Crosswalk ... – gustavohenke

1

当Chrome浏览器测试出你的应用程序,只需将应用程序的URL(通常192.xxx.xxx.xxx:3000)为localhost:3000

您需要确保您的媒体策略支持它,但不会收到安全错误。

相关问题