1

我搜索了各種與基於GeoLocation的警報問題相關的論壇和帖子;出於某種原因,沒有任何技術適用於我的情況www/index.html想使用您當前所在的位置--Ionic Framework

在我的Ionic Framework項目中添加了「cordova-plugin-geolocation」插件。

添加到我的基地控制器$ionicPlatform.ready(...)

navigator.geolocation.getCurrentPosition(function(position) { 
    var coords = {}; 
    coords.updated = new Date(); 
    coords.latitude = position.coords.latitude.toFixed(6); 
    coords.longitude = position.coords.longitude.toFixed(6); 
    coords.altitude = position.coords.altitude + ' m'; 
    coords.accuracy = position.coords.accuracy + ' m'; 
    coords.altitudeAccuracy = position.coords.altitudeAccuracy + ' m'; 
    coords.heading = position.coords.heading + '\u00b0'; 
    coords.speed = position.coords.speed + ' m/s'; 
    console.log('Fetched Location...' + geoText); 
    return position; 
}, function(err) { 
    Logger.error(err.message); 
}, { 
    timeout: 10000, 
    enableHighAccuracy: true 
}); 

下,當我模擬/ iOS中/ Android上運行它拋出

錯誤消息:/www/index.html想用您的位置

如果有人能幫忙,我將不勝感激。

+0

你不能真的在設備模擬器中測試cordova插件。您是否嘗試過構建並將其安裝在實際設備上?或者您可以使用intelxdk https://software.intel.com/zh-cn/intel-xdk導入您的項目,然後使用調試選項卡將其推送到設備並具有實時調試程序以測試cordova插件在真實的設備上並且能夠進行調試。 –

+0

是@Jess,我在我的手機(包括Android和iOS)中嘗試過。感謝您的回覆。該插件實際上工作正常,我的關注點是它彈出「.../Index.html想使用您的位置消息」(除了應用程序級別確認)。 – kousikraj

+0

是的,我們剛剛開始在ios 8.4.1中得到這個問題,但不是在android上。你有沒有設法找到解決辦法? –

回答

1

我通過如下

.service('LocationService', function($q) { 
     this.fetch = function() { 
      var deferred = $q.defer(); 
      navigator.geolocation.getCurrentPosition(function(position) { 
       deferred.notify('Fetching Location...') 
       var coords = {}; 
       coords.updated = new Date(); 
       coords.latitude = position.coords.latitude.toFixed(6); 
       coords.longitude = position.coords.longitude.toFixed(6); 
       coords.altitude = position.coords.altitude + ' m'; 
       coords.accuracy = position.coords.accuracy + ' m'; 
       coords.altitudeAccuracy = position.coords.altitudeAccuracy + ' m'; 
       coords.heading = position.coords.heading + '\u00b0'; 
       coords.speed = position.coords.speed + ' m/s'; 
       deferred.resolve(position); 
      }, function(err) { 
       deferred.reject(err); 
      }, { 
       timeout: 10000, 
       enableHighAccuracy: true 
      }); 
      return deferred.promise; 
     } 
    }) 

然後,我們應當在$ionicPlatform.ready(..)調用服務

Location.fetch().then(function(pos){...}) 

或添加一個按鈕下面這個

創建一個新的服務的位置解決這個問題ng-click獲取位置。

根本原因: 我相信那是什麼,當我們在任何的控制器調用Location.fetch()navigator.geolocation..直接,其當控制器最初加載執行。這可能會在Cordova/Ionic平臺準備就緒之前被解僱,因此我們得到了額外/不需要的警報,提及www/index.html正在嘗試使用位置作爲我的問題狀態。

+0

是的,這就解決了ios上的問題。 –

0

在config.xml中添加這些行

我修復了這個問題。

<feature name="Geolocation"> 
    <param name="ios-package" value="Geolocation" /> 
</feature> 
<gap:plugin name="cordova-plugin-geolocation" source="npm"/> 
相關問題