私はこの質問の回答/例に従っています。 AngularJS で Google マップを初期化する
何が起こっているかのプランカーの例をセットアップしました。 http://plnkr.co/edit/5fN7PR
git リポジトリの例を含みます。最初にマップ ページ (部分) を表示したときにマップが読み込まれますが、別のリンクを選択してからマップに戻ると、マップが読み込まれません。div を id="map" に置き換えないだけで呼び出されているため、マップがまだ存在していることがわかります。
この段階でマップが再初期化されるかどうかは気にしません。さまざまな場所のマップのストアをセットアップしましたが、マップがないと機能しません! リストと詳細ページは期待どおりに機能します。/web/place は、サイレックス バックエンドへの ajax 呼び出しです。
index.html
<div class="container full-width" ng-view></div>
app.js
'use strict';
/* App Module */
var app = angular.module('places', ['Controllers', 'Filters', 'Services']);
app.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/places', {templateUrl: 'partials/place-list.html', controller: 'ListController'}).
when('/places/:placeId/details', {templateUrl: 'partials/place-detail.html', controller: 'DetailController'}).
when('/places/:placeId/map', {templateUrl: 'partials/place-map.html', controller: 'MapController'}).
otherwise({redirectTo: '/places'});
}]);
controllers.js
'use strict';
/* Controllers */
var controllers;
controllers = angular.module("Controllers", []);
controllers.controller("ListController", function($scope, Place) {
$scope.places = Place.query();
});
controllers.controller("DetailController", function($scope, $routeParams, Place) {
$scope.place = Place.get({placeId: $routeParams.placeId});
});
controllers.controller("MapController", function($scope, $routeParams, Place, GoogleMaps) {
$scope.place = Place.get({placeId: $routeParams.placeId});
$scope.map = GoogleMaps;
});
services.js
'use strict';
/* Services */
var services;
services = angular.module('Services', ['ngResource']);
services.factory('Place', function($resource){
return $resource('/web/place/:placeId', {}, {
query: {method:'GET', params:{placeId:'list'}, isArray:true}
});
});
services.factory('GoogleMaps', function() {
var map_id = '#map';
var lat = -25;
var lng = 133;
var zoom = 16;
var map = initialize(map_id, lat, lng, zoom);
console.log(map);
return map;
function initialize(map_id, lat, lng, zoom) {
var myOptions = {
zoom : zoom,
center : new google.maps.LatLng(lat, lng),
mapTypeId : google.maps.MapTypeId.ROADMAP
};
console.log(myOptions);
return new google.maps.Map($(map_id)[0], myOptions);
}
});
place-map.html
<div id="map" style="width: 100%;"></div>