2015-11-23 92 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

您需要確保您的媒體策略支持它,但不會收到安全錯誤。

相關問題