2014-11-09 4 views
2

Может ли ngCordova и Ionic работать вместе?Рабочий пример геолокации для ngCordova

Кажется, что это блестящая комбинация, но я не могу заставить ее работать для геолокации независимо от того, какую комбинацию я стараюсь.

Я использую шаблон проекта вкладок, но я пробовал все остальные с тем же результатом.

Это мой файл controller.js, ничего не работает, кроме диалогов ... любые идеи?

angular.module('starter.controllers', ['ngCordova']) 
    .controller('DashCtrl', function($scope, 
       $cordovaMedia, $cordovaNetwork, $cordovaToast, 
       $cordovaDialogs, $cordovaSpinnerDialog, $cordovaGeolocation) { 

     var src = "/android_asset/www/audio/gong.mp3"; 

     // // 
     // var mediaSource = $cordovaMedia.newMedia(src); 
     // var promise = mediaSource.promise; 
     // var mediaStatus = mediaSource.mediaStatus; 
     // var media = mediaSource.media; 

     //$cordovaMedia.play(media); 

     $scope.showdialog = function(message) { 
      $cordovaDialogs.alert(err, 'scopey', 'ok'); 
     }; 

    $cordovaGeolocation 
     .getCurrentPosition() 
     .then(function (position) { 
      var lat = position.coords.latitude 
      var long = position.coords.longitude 

      $scope.showdialog(); 
     }, function(err) { 
     // Error 
     $scope.showdialog(); 
     }); 

    $scope.mutherclucker='oooo'; 

    $scope.SwapIt=function() { 
     $scope.mutherclucker = $scope.mutherclucker=='yeah'?'oooo':'yeah'; 
     //$cordovaSpinnerDialog.show("title","message", false); 
     $scope.showdialog(); 
    }; 

    // $cordovaToast 
    // .show('Here is a message', 'long', 'center') 
    // .then(function(success) { 
    // $scope.showdialog(); 
    // }, function (error) { 
    // $scope.showdialog(); 
    // }); 
    // 

    var type = $cordovaNetwork.getNetwork(); 

    // 

    var isOnline = $cordovaNetwork.isOnline(); 

    // 

    var isOffline = $cordovaNetwork.isOffline(); 
}) 

.controller('FriendsCtrl', function($scope, Friends) { 
    $scope.friends = Friends.all(); 
}) 

.controller('FriendDetailCtrl', function($scope, $stateParams, Friends) { 
    $scope.friend = Friends.get($stateParams.friendId); 
}) 

.controller('AccountCtrl', function($scope) { 

}); 
+0

Но работает общий навигатор.getCurrentPosition? –

+0

не так далеко, насколько я могу судить, это не ошибка, однако плагин cordovaToast определенно делает ошибку. Я следил за учебниками и т. Д. Почти до буквы, но, не удаляя все и переустанавливая, я не очень много не пробовал. Мне просто интересно, сумел ли кто-нибудь успешно запустить ngCordva с Ionic framework! вам удалось заставить его работать случайно? – Mike

+0

Нет, я никогда не использовал ngCordova, но я преподаю класс, в котором мы используем Кордову, и мы никогда не видели проблем с GeoLocation там. Я не был уверен, что вы конкретно просите ngCordova или просто были проблемы с получением GeoLocation в целом. –

ответ

0

Я не могу комментировать, потому что моя репутация не 50. Но я был в состоянии сделать ngCordova работу, более конкретно услуг $ cordovaGeolocation. Я смог собрать широту и долготу при тестировании моего приложения Ionic в браузере Chrome, а также запустить приложение на своем телефоне Galaxy S5.

У меня угловая версия 1.2.23, ngCordova ~ 0.1.7-alpha, ionic 1.0.0-beta.13 и ионная версия CLI 1.2.9.

Какие у вас версии? Проблема может быть там, но не уверен.

Редактирование: глядя на документы ngCordova и на мое собственное приложение, одна разница, которую я заметил из вашей установки, заключается в том, что вы не проверяете, загружено ли устройство, и доступны ли плагины cordova.

Отъезд документы: http://ngcordova.com/docs/

4

Я использую ионную на nexus5 и после добавления, а documentation состояний, в index.html

<script src="lib/ngCordova/dist/ng-cordova.min.js"></script> 
<script src="cordova.js"></script> 

Затем в app.js впрыснуть ngCordova:

angular.module('youApp', [ 
    'ionic', 
    'someService', 
    'ngCordova' 
]) 

Использование в качестве контроллера:

(function() { 
    'use strict'; 

    angular.module('geoblog').controller('InfoController', ['$cordovaGeolocation', InfoController]); 

    function InfoController($cordovaGeolocation) { 
     var vm = this; 
     var posOptions = {timeout: 20000, enableHighAccuracy: true} 

     vm.where = function(){ 
      $cordovaGeolocation.getCurrentPosition(posOptions) 
      .then(function(position){ 
       var lat = position.coords.latitude 
       var long = position.coords.longitude 
       console.log('lat', lat); 
       console.log('long', long); 
      }, function(error){ 
       console.log('error:', error); 
      }); 

     }; 
    }; 
})(); 

и в HTML:

<ion-view view-title="Info" ng-controller="InfoController as vm"> 
    <ion-content> 
     <h1>Info</h1> 
     <button class="button button-full button-energized" ng-click="vm.where()">Where am I?</button> 
    </ion-content> 
</ion-view> 

Он работает как шарм, и используя хром (хром: // инспектировать/# устройство) для удаленной отладки я могу увидеть в консоли моего LatLong.

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