2016-07-16 7 views
2

Diese Syntax von ngMap genommen https://github.com/allenhwkim/angularjs-google-maps funktioniert:Wie Sie einen Verweis auf NgMap innerhalb Angular Controller

angular 
    .module('trails') 
    .controller('MyController', function (NgMap) { 
     NgMap.getMap().then(function (map) { 
      console.log(map.getCenter()); 
      console.log('markers', map.markers); 
      console.log('shapes', map.shapes); 
     }); 
    }); 

Aber die Syntax I-Regler für die Deklaration verwenden ist anders und ich den Fehler:

angular.js:13642 TypeError: Cannot read property 'getMap' of undefined

Es fällt auf der Leitung wie weiter unten:

NgMap.getMap().then(function (map) {

Der Controller wird wie folgt deklariert:

angular 
    .module('trails') 
    .controller('ActivityDetailsController', [ 
     '$mdSidenav', '$mdBottomSheet', '$timeout', '$log', '$http', '$location', '$routeParams', 
     ActivityDetailsController 
    ]); 
function ActivityDetailsController($mdSidenav, $mdBottomSheet, $timeout, $log, $http, $location, $routeParams, NgMap) { 
    var self = this; 

    $http.get('/activity/detailStats/' + $routeParams.id, { 
     params: { max: "1000" } 
    }) 
     .success(function (data) { 
      self.stats = data.stats; 

      // Zoom to fit 
      var bounds = new google.maps.LatLngBounds(); 
      for (var i = 0; i < self.stats.activityTrackPoints.length; i++) { 
       var latlng = new google.maps.LatLng(self.stats.activityTrackPoints[i][0], self.stats.activityTrackPoints[i][1]); 
       bounds.extend(latlng); 
      } 
      NgMap.getMap().then(function (map) { 
       map.setCenter(bounds.getCenter()); 
       map.fitBounds(bounds); 
      }); 

     }) 
     .error(function (data, status) { 
      console.error('https error', status, data); 
     }) 
     .finally(function() { 
     }); 

ich versucht habe, die NgMap in anderen offensichtlichen Orten hinzufügen, wie zum Beispiel:.

...'$routeParams', NgMap, 
     ActivityDetailsController... 

oder einen ActivityDetailsController tun injizieren $ = NgMap vor der Controller Erklärung usw., aber es gibt einen ähnlichen Fehler oben dass NgMap nicht referenziert werden kann.

Bearbeiten: ngMap Abhängigkeit wurde in einer anderen Datei ähnlich den Antworten bereits eingerichtet. Tut mir leid, dass ich das nicht früher gemacht habe, aber der obige Code, der funktioniert und nicht funktioniert, ist an der gleichen Stelle zusammen, also dachte ich, es wäre okay, das ursprünglich wegzulassen.

var app = angular 
.module('trails', ['ngMaterial', 'md.data.table', 'ngRoute', 'ngMap']) 

Ich bin mir nicht sicher, ob dies mit der Art und Weise zu tun ist, ich falsch bin versucht NgMap mit dieser Controller Erklärung oder etwas in NgMap ... oder höchstwahrscheinlich meine Unerfahrenheit entweder mit Rahmen zu spritzen!

Antwort

1
var app= angular.module('trails', ['ngMap']); 
    app.controller('MyController', function($scope, $interval, NgMap) { 
    var vm = this; 
    NgMap.getMap().then(function(map) { 
     vm.map = map; 
    }); 
}); 
+0

Kein Glück beim Referenzieren von vm.map oder in meinem Fall self.map. Der Fehler ist immer noch "Kann die Eigenschaft 'getMap' von undefined nicht lesen, so dass es aussieht, als ob die NgMap nicht auf diese Weise die Controller-Funktion deklariert. – Steve

+0

.controller ('ActivityDetailsController', '$ mdSidenav', '$ mdBottomSheet', '$ timeout', '$ log', '$ http', '$ location', '$ routeParams', 'NgMap', ActivityDetailsController ]) – Abcd

+0

Du hast es Abcd, Zitate um die 'NgMap' werden auch hier benötigt (ich habe es immer versucht), liebe deine Arbeit! Irgendeine Idee warum? – Steve

1

Sie haben vergessen, ngMap Abhängigkeit hinzuzufügen.

Erklären Sie Ihre Modul auf diese Weise:

angular.module('trails', ['ngMap']) 

Und sollte es funktionieren.

+0

Danke für Ihre Antwort. Das hatte ich eigentlich schon, da der eine funktioniert und der andere nicht. Ich habe die Frage aktualisiert, um dies jetzt zu berücksichtigen, also ist es offensichtlicher. Prost. – Steve

Verwandte Themen