我正在考慮從backbonejs移植到angularjs。在AngularJS中初始化Google Map
骨幹中,我能夠初始化一個視圖,在這一點上我創建了一個谷歌地圖的實例。然後,我可以平移/縮放/等,並在視圖之間切換,而不會丟失地圖的當前狀態。
考慮以下使用angularjs:
的layout.html
<body>
<div class="container-fluid" ng-view></div>
map.html
<div id="map_canvas" ng-controller="MapCtrl"></div>
我能創造一個指令呈現地圖就好了。問題在於,每當我切換回地圖視圖時,它都會重新加載地圖。
<map></map>
所以從我對Angular的學習中,我想我會創建一個MapController並初始化那裏的地圖。沒有成功。
底線是我需要async-init一個谷歌地圖,並將數據推送到本地或遠程,並且能夠導航應用程序,而無需每次從頭開始重新貼圖。
有人可以建議正確的做法嗎?
謝謝:)
嘗試每安迪喬斯林建議:
在app.js:
// Generated by CoffeeScript 1.3.3
(function() {
"use strict";
angular.module("ofm", ["ofm.filters", "GoogleMaps", "ofm.directives"]).config([
"$routeProvider", "$locationProvider", function($routeProvider, $locationProvider) {
$routeProvider.when("/", {
templateUrl: "partials/home"
}).when("/map", {
templateUrl: "partials/map",
controller: MapCtrl
}).otherwise({
redirectTo: "/"
});
return $locationProvider.html5Mode(true);
}
]);
}).call(this);
在services.js:
angular.module('GoogleMaps', []).
factory('wasMapInitialized', function() {
console.log("inside service");
var maps = 0;
if (!maps) {
maps += 1;
return 0;
} else {
return 1;
}
});
在controllers.js:
function MapCtrl($scope) {
if (!GoogleMaps.wasMapInitialized()) {
var lat = 46.87916;
var lng = -3.32910;
var map_id = '#map';
initialize(map_id, lat, lng);
}
function initialize(map_id, lat, lng) {
var myOptions = {
zoom : 8,
center : new google.maps.LatLng(lat, lng),
mapTypeId : google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map($(map_id)[0], myOptions);
}
}
在map.html
#map
<div ng-controller="MapCtrl"></div>
我得到錯誤:未知提供商:GoogleMapsProvider < - 谷歌地圖
+1。也想知道答案。 –
我創建了一個項目[angular-google-maps](https://github.com/LarryEitel/angular-google-maps)並持續改進。查看[live version](http://angular-google-maps.nodester.com/) –
太好了,已經在我的觀察名單上了。 :) –