2016-04-29 56 views
0

使用地理定位與離子(科爾多瓦插件或JavaScript)來獲取用戶的位置,直到最近停止了工作,控制檯登錄以下錯誤:地理位置停在不安全的地點工作,因此對離子

getCurrentPosition() and watchPosition() are deprecated on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See ... for more details.

enter image description here

以下是代碼

navigator.geolocation.getCurrentPosition(function (pos) { 
     var data = { 
      Lati: pos.coords.latitude, 
      Longi: pos.coords.longitude, 
      /*LoginID: JSON.parse(window.localStorage.getItem('LoginId'))*/ 
      EmpCode: localStorage.getItem('LoginId') 
     }; 
     console.log(pos.coords.latitude + "," + pos.coords.longitude); 
     $http.post("https://someapi", data).success(function (rsdata, status) { 

      console.log(data.Lati + "," + data.Longi); 
     }) 

    }, function (error) { 
     alert('Unable to get location: ' + error.message); 
    });} 
+1

這是一個更全球性的問題:https://mobiforge.com/news-comment/no-https-then-bye-bye-geolocation-in-chrome-50 ...網絡將成爲一個安全的地方,這意味着:一切** https ** – Hitmands

+0

@Hitmands我知道它已被棄用..但無法找到一種方式讓它與離子的工作,因爲我可以使一個網站https://但不是一個應用程序 – Yashesh

+0

我認爲有什麼目前... – Hitmands

回答

0

看來你需要添加AA有效CERTI指向您的服務器並通過https提供所有服務。或者爲了測試目的,請按照這裏的建議https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins

+0

apis已經在一個安全的服務器(https://) 我們不能把離子碼放在服務器上,因爲它與apk捆綁在一起 – Yashesh

+0

我很困惑 - 你在建立一個應用程序還是一個網頁?在一個應用程序中,如果您使用Geolocation插件,它只是簡單的工作。 –

+0

在初始文章中的屏幕截圖顯示了一個瀏覽器窗口,因此我認爲錯誤發生在web應用程序,而不是在apk裏面 –

0

此代碼過去用於加載第1頁。

navigator.geolocation.getCurrentPosition(function(pos) { 
     localStorage.setItem('masterLati', pos.coords.latitude); 
     localStorage.setItem('masterLong', pos.coords.longitude); 
     }, function(error) { 
     alert('Unable to get location: ' + error.message); 
     }); 

併發布您的服務器上Lat Long網。

$scope.postOnClickButton = function() { 
    $ionicLoading.show({ 
     template: '<p>Loading...</p><ion-spinner icon="bubbles"></ion-spinner>' 
    }); 

    var masterLati = localStorage.getItem('masterLati'); 
    var masterLong = localStorage.getItem('masterLong'); 

    var getLogUserId = document.getElementById('userLogInId').value; 
    var getLogUserPswd = document.getElementById('userpswdId').value; 
    var dataString = 'email=' + getLogUserId + '&password=' + getLogUserPswd + '&lati=' + masterLati + '&long=' + masterLong; 

    $.ajax({ 
     type: "POST", 
     url: '' + globURL + 'login.php', 
     data: dataString, 
     cache: false, 
     success: function(result) { 
     console.log(result); 
     $ionicLoading.hide(); 

     } 
    }); 
    } 
+0

我正在做同樣的事情,直接調用API來存儲座標.. 問題是我' m無法獲取座標作爲geolocation()認爲腳本運行在一個不安全的來源 – Yashesh

+0

好吧,然後刪除刪除舊的一個插件,並安裝這一個「科爾多瓦插件添加org.apache.cordova.geolocation」 –

+0

我試過..did不行 – Yashesh

0

看看這個link這基本上意味着此功能將不會在未來支持,僅適用於HTTPS站點。此外,看起來沒有計劃爲HTTP使用創建等效替換。