2016-07-25 32 views
1

我正在構建一個依賴地理定位的小應用程序。我用下面的代碼來獲取設備的當前位置:Ionic - navigator.geolocation返回空錯誤對象

var options = { maximumAge: 3000, timeout: 300000, enableHighAccuracy: true }; 
navigator.geolocation.watchPosition(function(result) { 
    console.info(result); 
}, function(error) { 
    console.error(JSON.stringify(error)); 
}, options); 

然而,這隨時調用錯誤回調空的錯誤對象

1  123317 error {} 

沒有代碼也不是消息,只是一個空的對象。另外有趣的是,無論我設置爲超時,錯誤回調被稱爲立即

我的AndroidManifest.xml是這樣的:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 

的結果是一樣的天氣在我的手機上運行它在模擬器或直接。如果任何人有任何想法如何解決這個問題,將不勝感激。

回答

0

使用下面的代碼

var options = { enableHighAccuracy: true, timeout:5000, maximumAge: 0 };

2

這是因爲返回的錯誤對象是一個特殊的對象。使用JSON.stringify不考慮繼承屬性。如果您使用的是Chrome或Safari,則尤其如此。

$cordovaGeolocation 
.getCurrentPosition() 
.then((resp)=>{ 
    $scope.lat = resp.coords.latitude; 
    $scope.lon = resp.coords.longitude; 
}).catch((error)=> { 
    $scope.errm = error.message; 
    $scope.errc = error.code; 
    console.log(error.code+" "+error.message) 
}); 

您可以使用此代碼查看錯誤代碼和消息。如果你想查看完整的對象,你可以使用SO Answer這樣做。

由於錯誤,有幾個需要安全起源或WiFi連接,可能會限制相同。

PS:這也適用於Geolocation對象。