Google Maps API・マイマップの使い方・活用法をご紹介しています。

提示サンプル例:Animating Symbols|Google Maps JavaScript API|Google Developers

GoogleMapsAPIを利用していてコールバック関数や、
インターバル、タイムアウトなどの処理が必要な場合に、
サンプルソースで出てくる無名関数でパラメータ(引数)を、
渡す必要がある処理を導入する際の参考として記述の例をご紹介します。
本投稿ではサンプルソースをそのまま実行する例でご紹介します。

 

提示サンプル例:Animating Symbols

「Animating Symbols」はポリライン上にシンボル(SVG)を描画し、
そのシンボルをポリラインに沿ってアニメーション表現をする際の処理です。

公式には以下で例示されているソースになります。

(出典)Animating Symbols  |  Google Maps JavaScript API  |  Google Developers

 

動作はサンプルソースそのままになりますので、
以下の通り、全く同じ動作をしています。


この処理の抜粋ですが、
以下のように「window.setInterval(function() {...}, 20);」と
無名関数内でインターバル処理を記述しています。

(引用)Animating Symbols  |  Google Maps JavaScript API  |  Google Developers

上記の無名関数の定義では、
window.setInterval()の第一引数に無名関数を渡し、
11行目で無名関数の終了=第一パラメータの終了。
その後、第二パラメータのインターバル値(20)を渡しています。

私は個人的にこの記述がどうも苦手なのです。
また「};)」なんかの閉じがズレていたりと編集がしにくかったりします。

 

上記のサンプルは以下で表示しています。

 


個人的には無名関数の中に処理を書き、
さらに第二パラメータがあるような場合が実に苦手なんです。

ちょっと変更しただけで入れ子が崩壊してしまったり、
動作しなくなることばかりで、

そもそも「アニメーション」って必要か?

と、諦めてしまいたくなるのです。

 

別関数で無名関数を分割

いやいや、一度しか呼ばないような処理だから「無名」でいいんだろ?

と言うのは、置いておいて、
後から見た時に少しでも分かりやすい書き方をしておきたい。

忘れたことにソースを見て、
「window.setInterval(function() {...}, 20);」の「, 20」部分が、
window.setIntervalの第二パラメータであることに、
ぱっと気づくことが自分にはできないと思うのです。

そしてさらに、
無名関数自体にパラメータを渡したい場合などにはより面倒になってきます。

そこで、以下のような別の記述方法を試すことをしました。

 


公開日:

コンテンツ
すべて展開 | すべて省略