OpenLayers + AngularJSでdirectiveを使ったら捗った
AngularJSを使い始めて6ヶ月・・・
やっと使い方がわかって気がする
あとJavascriptのいわゆる「MV*」も
いや、わかっていないな~
わかったことは、とにかくcontrollerはイベント処理に徹底しよう!というぐらい
OpenLayers(2.13.1) + AngularJS を使ったWEBアプリを作ってて
OpenLayersとAngularJSのつなぎ合わせがうまくいかない(うまく作れない)
OpenLayersのインスタンス・操作関数をfactoryにまとめて、controllerで操作すると
初期化処理で「地図オブジェクトないよ!」とか「レイヤの表示状態が取れねぇ」とか・・・
結局「$timeout(function・・・ ,0)」を入れまくる始末・・・
だいたい、controllerの中に「window.onload」とか書いて、その中にOpenLayersの初期化処理
書いてる時点でお察しください 地図が出れば良いのだ!
これはよろしくない
controller、factory(service)、viewについて以下のサイトで再勉強
OpenLayersの処理がcontrollerに1行でも入っていること自体がよろしくないんじゃ・・・?
OpenLayersって地図画面操作だよなぁ・・・
画面操作?・・・あれ?directiveが良いんじゃね?
というわけでAngularJSのdirective(&factory)とOpenLayersを使って地図を表示してみた。
↓サンプル
id="map_canvas"が読み込まれるタイミングやらインスタンスができるタイミングで悩んでいたのに・・・最初からこう書けばよかった・・・
どちらかと言えば、超肥大化してしまったOpenLayersのラッパーファクトリをなんとかしないと 似たような処理しかないのに2000行あるでござる!