« アルカトラズからの脱出 | メイン | 本棚を追加してみました »
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