2017-10-13 5 views
1

J'essaie d'ajouter une carte google dans angulaire JS ... et ont eu du mal. Je ne voulais pas utiliser l'une des dépendances angulaires, mais simuler le 'async report' sur le Google JS API site. Je suis un peu nouveau dans Angularjs mais j'obtiens le concept de garder les choses assignées à la portée des contrôleurs. Sûr qu'il est juste quelque chose de stupide, mais pas sûr de ce que ... toute aide serait génial :-)Angularjs Google Map API Intégration

(function() { 
    'use strict'; 
    app.controller('travelCtrl', ['$scope', function($scope) { 

    $scope.injectScript = function(element) { 
     var scriptTag = angular.element(document.createElement('script')); 
     scriptTag.attr('charset', 'utf-8'); 
     scriptTag.attr('src', 'https://maps.googleapis.com/maps/api/js?key=MYKEY'); 
     element.append(scriptTag); 
     return { 
      link: function(scope, element) { 
      injectScript(element)}}}; 

    $scope.initMap = function() { 
      var uluru = {lat: -25.363, lng: 131.044}; 
      var map = new google.maps.Map(document.getElementById('kc-map'), { 
      zoom: 4, 
      center: uluru 
      }); 
     }; 
    }]); 
    })(); 

HTML

<div ng-controller="travelCtrl" id="kc-map"></div> 
+0

Qu'est-ce qui ne fonctionne pas exactement? La carte ne se charge pas? – kappaallday

+0

La carte ne se charge pas. Aucun message d'erreur sur la page, ne charge tout simplement pas. –

+0

Pour ce faire: 'angular.element (élément) .append (scriptTag);' MKEY semble être invalide api clé tho – kappaallday

Répondre

0

figured it out ...

app.controller('travelCtrl', ['$scope', function($scope) { 
    $scope.initialize = function() { 
     $scope.mapOptions = { 
      zoom: 8, 
      center: new google.maps.LatLng(22.649907498685803, 88.36255413913727) 
     }; 
     $scope.map = new google.maps.Map(document.getElementById('kc-map'), $scope.mapOptions); 
    } 

    $scope.loadScript = function() { 
     var script = document.createElement('script'); 
     script.type = 'text/javascript'; 
     script.src = 'https://maps.googleapis.com/maps/api/js?key=AIzaSyD-5e8hV-uCuE1pEgTyMhk_gJJPK2f3F5A&callback=initialize'; 
     document.body.appendChild(script); 
     setTimeout(function() { 
      $scope.initialize(); 
     }, 500); 
    } 
    }]); 

Ajoutez ceci à div externe.

ng-init="loadScript()" 

réponse grâce à this post