backbonejsからangularjsへの移行を検討しています。Google MapをAngularJSで初期化する
バックボーンで、私はどの時点で私はGoogleマップのインスタンスを作成するビューを初期化することができます。私はパン/ズーム/ etcとビューを切り替えることができますし、地図の現在の状態を失うことはありません。私はちょうど罰金マップをレンダリングするためのディレクティブを作成することができました
layout.html
<body>
<div class="container-fluid" ng-view></div>
map.html
<div id="map_canvas" ng-controller="MapCtrl"></div>
:
は、以下の使用angularjsを考えます。問題は、マップビューに戻るたびに地図を再読み込みすることです。
<map></map>
私がAngularについて学んでいることから、私はMapControllerを作成し、そこでマップを初期化すると考えました。失敗。
ボトムラインGoogleマップを非同期に初期化し、ローカルまたはリモートにデータをプッシュし、毎回地図を最初から再読み込みせずにアプリをナビゲートできるようにする必要があります。
誰かが正しいアプローチを提案できますか?
ありがとうございました:)アンディ・ジョスリン提案パー
試み: app.jsで
:services.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);
:
angular.module('GoogleMaps', []).
factory('wasMapInitialized', function() {
console.log("inside service");
var maps = 0;
if (!maps) {
maps += 1;
return 0;
} else {
return 1;
}
});
を0 controllers.jsで
:map.htmlで
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 <div ng-controller="MapCtrl"></div>
は私が得るエラー:不明なプロバイダ:GoogleMapsProvider < - Googleマップ
+1です。答えも知りたいですか? –
私は、進行中の改善を伴うプロジェクト[angular-google-maps](https://github.com/LarryEitel/angular-google-maps)を作成しました。 [ライブバージョン](http://angular-google-maps.nodester.com/)を参照してください –
素晴らしい、すでに私のウォッチリストに。 :) –