Карта Google не загружается — Angular JS

#javascript #jquery #html #angularjs #google-maps

#javascript #jquery #HTML #angularjs #google-карты

Вопрос:

Я пытаюсь создать приложение с помощью Google Map, однако, похоже, я что-то упускаю.

Вот мой код:

 <div class="container-fluid" ng-app="mapApp" ng-controller="mapCtrl">
  <div class="row">
    <div class="container-fluid">
      <div class="row header">
        <ui-gmap-google-map center='map.center' zoom='map.zoom'>{{map}}</ui-gmap-google-map>
      </div>
    </div>
  </div>
</div>
  

app.js:

 'use strict';

// Declare app level module which depends on views, and components
angular.module('mapApp', [
  'ngRoute'
]).config(['locationProvider', '$routeProvider', function($locationProvider, $routeProvider) {
  $locationProvider.hashPrefix('!');

  $routeProvider.otherwise({redirectTo: '/view1'});
}]);
.config(function(uiGmapGoogleMapApiProvider) {
  uiGmapGoogleMapApiProvider.configure({
    key: 'key',
    v: '3.20', //defaults to latest 3.X anyhow
    libraries: 'weather,geometry,visualization'
  });
});
  

controller.js:

 app.controller('mapCtrl', function($scope, uiGmapGoogleMapApi) {
    //make magic
    uiGmapGoogleMapApi.then(function(maps) {
        $scope.map = { center: { latitude: 45, longitude: -73 }, zoom: 8 };
    });
});
  

и я добавил стиль:

 .angular-google-map-container {
  height: 400px; }
  

Вывод, похоже, плохо анализирует выражение, поэтому я получаю только {{map}} .

Я потерял целый день, пытаясь разобраться в этом.. вероятно, это что-то «маленькое», что я пропустил. Пожалуйста, обратите внимание, что под ‘key’ находится законный ключ API.

Пожалуйста, помогите, спасибо.

Ответ №1:

Вам также необходимо объявить зависимость от uiGmapgoogle-maps модуля, поэтому замените

 angular.module('mapApp', [
  'ngRoute'
])
  

с

 angular.module('mapApp', [
  'uiGmapgoogle-maps',
  'ngRoute'
])
  

В приведенном примере есть несколько опечаток, как только они тоже будут исправлены, карта должна быть загружена как исключенная

 'use strict';

angular.module('mapApp', [
  'uiGmapgoogle-maps',
  'ngRoute'
])
.config(['$locationProvider', '$routeProvider', function ($locationProvider, $routeProvider) {
  //$locationProvider.hashPrefix('!');
  //$routeProvider.otherwise({ redirectTo: '/view1' });
}])
.config(function (uiGmapGoogleMapApiProvider) {
  uiGmapGoogleMapApiProvider.configure({
    //key: '',
    v: '3.20', //defaults to latest 3.X anyhow
    libraries: 'weather,geometry,visualization'
  });
})
.controller('mapCtrl', function($scope, uiGmapGoogleMapApi) {
    uiGmapGoogleMapApi.then(function(maps) {
        $scope.map = { center: { latitude: 45, longitude: -73 }, zoom: 8 };
    });
});  
 .angular-google-map-container {
  height: 400px; 
}  
 <script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/3.0.1/lodash.js" type="text/javascript"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.10/angular.js"></script>
<script src="http://cdn.rawgit.com/nmccready/angular-simple-logger/0.0.1/dist/index.js"></script>
<script src="http://rawgit.com/angular-ui/angular-google-maps/2.3.2/dist/angular-google-maps.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.10/angular-route.min.js"></script>

<div class="container-fluid" ng-app="mapApp" ng-controller="mapCtrl">
		<div class="row">
			<div class="container-fluid">
				<div class="row header">
					<ui-gmap-google-map center='map.center' zoom='map.zoom'>{{map}}</ui-gmap-google-map>
				</div>
			</div>
		</div>
</div>  

Ответ №2:

Поместите $scope.map за пределы promise в controller. При текущей настройке вы должны получить ошибку — «angular-google-maps: требуется свойство center или bounds».


 app.controller('mapCtrl', function($scope, uiGmapGoogleMapApi) {
  $scope.map = {center: { latitude: 45, longitude: -73 }, zoom: 8 };
});
  

Plunkr, который работает — здесь — предоставляет КЛЮЧ API