2017-01-09 54 views
0

我想显示使用离子/ angularjsinitMap不符合angularjs谷歌地图API的功能

我得到这个错误主页内谷歌地图

initMap不是一个函数

下面的代码

var app = angular.module('starter', ['ionic']); 
 

 
app.run(function($ionicPlatform) { 
 
    $ionicPlatform.ready(function() { 
 
    if (cordova.platformId === "ios" && window.cordova && window.cordova.plugins.Keyboard) { 
 
    
 
     cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); 
 

 
     cordova.plugins.Keyboard.disableScroll(true); 
 
    } 
 
    if(window.StatusBar) { 
 
     StatusBar.styleDefault(); 
 
    } 
 
    }); 
 
}) 
 

 

 

 

 
app.controller('homeController', function ($ionicPlatform) 
 
{ 
 

 
    $ionicPlatform.ready(function() 
 
    { 
 

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

 

 
})
<body ng-app="starter" ng-controller="homeController"> 
 

 
     <h3>My Google Maps Demo</h3> 
 
     <div id="map"></div> 
 

 

 
     <script async defer 
 
       src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBscOlAy5I1y_LQfnHYxPafZi5Lo0QoK9I&callback=initMap"> 
 
     </script> 
 
    
 
    </body>

注意:它的工作原理没有使用控制器,但我需要使用控制器来显示它。 你能知道什么是问题吗?

+0

调用函数时,您呼叫initMap这意味着()没有定义。你从你的脚本调用这个函数后,你的API密钥,所以它必须在此之前定义... –

+0

谢谢,但我怎么能定义它? – saifaldeen

回答

0

不熟悉的角度,但这可能工作

**remove callback from script** 
<script async defer 
       src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBscOlAy5I1y_LQfnHYxPafZi5Lo0QoK9I"> 
     </script> 

现在从控制器

app.controller('homeController', function ($ionicPlatform) 
{ 

    $ionicPlatform.ready(function() 
    { 

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

initMap(); 

    }) 


}) 
+0

是的,它的工作原理是这样的,但我需要显示使用控制器的地图 – saifaldeen

+0

谢谢,它的工作原理 所以我需要用'initMap();'调用函数的问题 – saifaldeen