« アルカトラズからの脱出 | メイン | 本棚を追加してみました »

2006年03月11日

Google Maps で連続する動作が上手くいかない

位置情報を使ったサービスを作りたくって Google Maps API をいじりながらゴニョゴニョしているのだけど、どうも上手くいかない。かれこれ、8時間ほど費やしたような気がする。

座標 A から座標 B にスクロール移動(滑らかに移動)させたいというだけなんだけど。

recenterOrPanToLatLng(latLng)

という関数を使えば、スクロール移動させることができます。

Centers the map at the given point, doing a fluid pan to the point if it is within the current map viewport.

という通り、表示域を超えるとスクロール移動せずに、ページが切り替わるような感じになってしまう。これを回避するような関数を作成したいわけです。

アプローチは、2通り思いつきました。

1. 少しずつ移動

表示域で動ける最大の座標に移動しながら、数回にわたりスクロール移動を繰り返す方法。

2. 縮尺を変更して移動

移動先の座標が表示域に含まれるように縮図を変更してから移動。移動後に元の縮尺に戻す。

双方の関数を実装してみたのだけど、どうも連続した動作ができないような気がする。例えば recenterOrPanToLatLng を続けて呼び出すと、最後の移動しかスクロールされません。ループ処理をしている場合、スクロール移動処理 recenterOrPanToLatLng が終わってから次の動作に進むことを期待しているのに…

どんな座標にでもスクロール移動させるという需要はあると思うのだけど、誰もそんな関数は作っていないのかな?他のアプローチでも良いので参考になるページを探し中。

Yahoo! Maps Web Services が日本に対応していたら、そっちも検討するんだけどなぁ。

【関連情報】
・Google Maps API Documentation
 http://www.google.co.jp/apis/maps/documentation/

2006年03月11日 22:28 | Programming

トラックバック

コメント