Rozważam migrację z backbonejs do angularjs.Inicjuj mapę Google w AngularJS
W kręgosłupie mogę zainicjować widok, w którym momencie tworzę instancję mapy google. Mogę wtedy przesuwać/powiększać/etc i przełączać się między widokami i nie tracić aktualnego stanu mapy.
Przy następujących wykorzystujące angularjs:
layout.html
<body>
<div class="container-fluid" ng-view></div>
map.html
<div id="map_canvas" ng-controller="MapCtrl"></div>
udało mi się stworzyć dyrektywę do renderowania map dobrze. Problem polega na tym, że ponownie ładuje mapę za każdym razem, gdy przełączę się z powrotem do widoku mapy.
Z tego, czego się dowiedziałem o Angular, pomyślałem, że utworzę MapController i zainicjuję tam mapę. Bez powodzenia.
Najważniejsze jest to, że muszę asyncować -inicjować mapę google i przesyłać dane do niej lokalnie lub zdalnie. I móc poruszać się po aplikacji bez odkładania mapy od początku za każdym razem.
Czy ktoś może zaproponować prawidłowe podejście?
Dziękuję :)
Próba Per Andy Joslin sugestia:
W 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);
W services.js:
angular.module('GoogleMaps', []).
factory('wasMapInitialized', function() {
console.log("inside service");
var maps = 0;
if (!maps) {
maps += 1;
return 0;
} else {
return 1;
}
});
W 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);
}
}
W map.html
#map
<div ng-controller="MapCtrl"></div>
otrzymuję błąd: Unknown provider: GoogleMapsProvider < - GoogleMaps
+1. Chciałbym również znać odpowiedź. –
Stworzyłem projekt [angular-google-maps] (https://github.com/LarryEitel/angular-google-maps) z ciągłymi ulepszeniami. Zobacz [wersja na żywo] (http://angular-google-maps.nodester.com/) –
Świetnie, już na mojej liście obserwowanych. :) –