2017-02-17 36 views
0

我想在我的angularJS頁面中顯示地圖,如下所示。在使用angularjs嘗試googlemaps時,獲取__不是函數無效值錯誤

的index.html

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <script src="js/angular.min.js"></script> 
</head> 
<body ng-app="abc"> 
<div id="controller" ng-controller="def as ctrl"> 
    <div id="googlemap" style="height:100%; width:100%"></div> 
</div> 
<script src="js/jquery.min.js"></script> 
<script src="js/bootstrap.min.js"></script> 
<script src="js/scripts.js"></script> 
<script src="https://maps.googleapis.com/maps/api/js?key=API_KEY&callback=displayMap"></script> 
</body> 
</html> 

而且我scripts.js中的文件如下。

var mainApp = angular.module('abc',[]); 
mainApp.controller('def', function($scope,$http) { 

    this.displayMap=function() { 
      var mapOptions = { 
       zoom: 4, 
       center: new google.maps.LatLng(40.0000, -98.0000), 
       mapTypeId: google.maps.MapTypeId.TERRAIN 
      } 

      $scope.googlemap = new google.maps.Map(document.getElementById('googlemap'), mapOptions); 
     } 

} 

我得到的displayMap不是函數InvalidValueError消息。如何解決?

回答

1

displayMap通過回調參數傳遞的函數預計從全局範圍可見,但在提供的示例中,它只能在def控制器的範圍內訪問。

在角應用,而不會調用displayMap功能通過callback參數,你可以從位指示這樣調用它:

google.maps.event.addDomListener(window, 'load', displayMap); 

angular.module('mapApp', []) 
 

 
    .controller("mapCtrl", function ($scope, $http) { 
 
     
 
     var displayMap = function (data) { 
 
      var mapOptions = { 
 
       zoom: 4, 
 
       center: new google.maps.LatLng(48.209500, 16.370691), 
 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
 
      } 
 
      var map = new google.maps.Map(document.getElementById("map_div"), mapOptions); 
 
     }; 
 

 
     google.maps.event.addDomListener(window, 'load', displayMap); 
 

 
    });
#map_div { 
 
     height: 280px; 
 
     }
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.min.js"></script> 
 
<script src="https://maps.google.com/maps/api/js"></script> 
 
<script src="app.js"></script> 
 

 

 
<div ng-app="mapApp" ng-controller="mapCtrl"> 
 
    <div id="map_div" ></div> 
 
</div>

相關問題