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

シンボル(SVG)を直線に沿ったアニーメーションで移動する |Google Maps API v3

GoogleMapsAPIで描画したポリライン上に沿って、
ポリラインシンボルを描画し、アニメーションで動かして表現をすることができます。
ここでは矢印をポリラインに沿って動かすサンプルでご紹介します。

 

地図の表示

以下は指定した座標(「姫路城」と「三の丸広場南」)を、
結ぶポリラインを表示しています。
ポリラインの上に「Λ」マークを描画し、
2点間を移動するアニメーションを描画します。

 

初期状態では10ミリ秒単位で描画を行い、
ポリライン全体を200分割したコマ数でシンボルを移動します。
ポリライン上を3回アニメーションしたのち、停止します。

 

以下のフィールドに「半角数字」で値を入力し、
「再度実行する」をクリックすると設定した速度でアニメーションが行われます。

 

補足

地図上にポリラインを表示(「姫路城」と「三の丸広場南」を結ぶ直線)する
方法については以下でご紹介しています。

またポリライン上にSVGパスを表示する手順については、
以下でご紹介しています。

描画するSVGシンボルは独自にSVGパスで指定して描画できるものであれば、
表示することができますが、5種類は定数で指定することができます。

表示したシンボルを動かす処理についてここでは補足します。
基本的に「window.setInterval」にてSVGパスの描画位置を、
ポリライン全体のうち0%~100%の間で指定することで、
疑似的にアニメーション表示を行っているものです。

上記のサンプルで、以下の値などに指定すると、
10%ずつ矢印が進みますので、コマ送りに見えるのが分かる事と思います。

  • 更新頻度(ミリ秒・半角):200
  • 全体の分割数(半角):10

 

シンボルのインターバル描画を実際に行っている部分が以下の部分です。

4行目で、ラインを生成した際に描画済みのシンボルを取得しています。

Intervalcountはインターバル実行が行われる度に計算されます。
分割数(options.div_num)で指定した値の余りを求めて格納していますので、
常に分割数で指定した値の範囲内でカウントが繰り返されます。

options.posは分割数を100で割った1描画当たりのパーセントが格納されており、
Intervalcountをそれを割って、現在のシンボル描画位置のパーセントを割り出しています。

この辺の処理は数値固定で書かれた、
以下のサンプルソースを見た方が理解しやすいかと思います。

Animating Symbols  |  Google Maps JavaScript API  |  Google Developers

基本的にはインターバル実行で繰り返し、
シンボルの描画位置(パーセント指定)を毎回少しずつずらす処理をしているだけです。

2017/01/26追記

以下のサンプルコードではインターバル処理の呼び出し部に、
第三パラメータを含む形の関数呼び出しを利用しています。
以下のような処理方法ですが、このままではIEでは動作しません。

その為、IEに影響のないような記述方法を採用されることをお勧めします。

 

サンプルコード

HTML

HTMLではGoogle Mapを表示するエリア(<div id=”gmap_canvas”></div>)を配置しています。
エリアを囲んでいる「<div class=”aspect”></div>」部分は、
ページ表示用の高さ制御用のタグです。

 

CSS

CSSではclass=”aspect”に対して、 幅100%を指定し、 高さをビューポートの50%としています。 GoogleMapを表示するエリア(id=”gmap_canvas”)のサイズを、 class=”aspect”に対しての幅・高さを100%として指定しています。

JavaScript

上記の補足説明の通りです。
ここでは便宜上、JavaScriptのファイル上からボタンを出力しています。

別途、GoogleMapsAPIのライブラリを読み込む記述が必要です。 ご自分が取得されたAPIキーを以下のコードの(YourAPIkey)部分に置き換えて設定してください。

 

参考

図形  |  Google Maps JavaScript API  |  Google Developers

Polyline class|Google Maps JavaScript API V3 Reference  |  Google Maps JavaScript API  |  Google Developers

シンボル  |  Google Maps JavaScript API  |  Google Developers

SymbolPath constants|Google Maps JavaScript API V3 Reference  |  Google Maps JavaScript API  |  Google Developers

Animating Symbols|Google Maps JavaScript API V3 Reference  |  Google Maps JavaScript API  |  Google Developers

window.setInterval – Web API インターフェイス | MDN

window.clearInterval – Web API インターフェイス | MDN


公開日:

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