2016-07-29 3 views
1

В настоящее время я нахожусь в начальной фазе строительства погоды приложения через ионный. Прямо сейчас я хочу реализовать геолокацию cordova, у меня есть ошибка Unknown provider: $cordovaGeolocationProvider <- $cordovaGeolocation Я пытаюсь исправить, но безуспешно, но это продолжает давать ошибку при ее открытии. Для целей тестирования я использую ионную подачу и проверяю ее на локальном хосте.

мой код

(function() { 
    angular.module('app.weather', ['ionic']) 

     .factory('Weather', function($q, $http) { 
      var deferred = $q.defer(); 

      function getCurrentWeather(lat, lng) { 
       var url = 'https://api.forecast.io/forecast//' + lat + ',' + lng + '?callback=JSON_CALLBACK'; 
       $http.jsonp(url) 
        .success(deferred.resolve) 
        .error(deferred.reject); 

       return deferred.promise; 
      } 

      return { 
       getCurrentWeather: getCurrentWeather 
      }; 
     }) 
     .controller('WeatherCtrl', function($scope, $cordovaGeolocation, Weather) { 
      $scope.loading = true; 

      $scope.toCelsius = function(temperature) { 
       return ((temperature - 32)/1.8).toFixed(1); 
      }; 

      $cordovaGeolocation 
       .getCurrentPosition({ 
        timeout: 10000, 
        enableHighAccuracy: false 
       }) 
       .then(function(position) { 
        var lat = position.coords.latitude; 
        var long = position.coords.longitude; 

        Weather.getCurrentWeather(lat, long).then(function(data) { 
         $scope.weatherInfo = data; 
         $scope.loading = false; 
        }, function(error) { 
         //TODO Display error message 
        }); 
       }, function(err) { 
        //TODO Display error message 
       }); 
     }); 
})(); 

код HTML

<ion-view title="الرئيسية" id="page2" style="background-color:#FFFFFF;" class=" "> 
    <ion-content padding="true" class="has-header"> 
    <ion-pane> 
<div ng-controller="WeatherCtrl as weatherCtrl"> 
<div ng-show="loading"> 
       Carregando informações... 
      </div> 
      <div ng-hide="loading"> 
       <p> 
        Temperatura: {{toCelsius(weatherInfo.currently.temperature)}}º 
       </p> 
       <p> 
        Sensação térmica: {{toCelsius(weatherInfo.currently.apparentTemperature)}}º 
       </p> 
      </div> 
         </div> 

    </ion-content> 
</ion-view> 
+0

Попробуйте http://stackoverflow.com/a/36158618/ 5059916 –

+0

вы включили файл 'ng-cordova'? –

ответ

1

Убедитесь, что у вас есть ngCordova или Ionic Native установлен, в противном случае вы не можете использовать $cordovaGeolocation как это обертка определено в любом из этих библиотек.

Вы можете найти инструкции по установке ngCordovahere и here для Ionic Native. Существует также недавняя статья о Ionic Nativehere, которая может представлять интерес.

Также имейте в виду, что большинство плагинов Cordova не работают в браузере, поэтому вам может потребоваться протестировать на самом устройстве.

+0

спасибо я исправил – razak

0

функциональности $ cordovaGeolocation, наряду с любой другой родной функциональностью может быть использовано только в эмуляторе или на устройстве. Если вы используете приложение из браузера, он не может взаимодействовать с плагином и поэтому не определен.

+0

спасибо я исправлен – razak

5

добавить 'ngCordova' в модуле как

(function() { 
    angular.module('app.weather', ['ionic','ngCordova']) 

затем добавить ngcordova.min.js ссылку на файл в свой index.html

Смежные вопросы