getBoundsがundefined
今まではほぼPHP専門でやってきたけど、最近はあきらかにJavaScriptの開発が多い。JavaScriptで作ったプログラムが動くと、見た目の印象がいいので面白いしね。
Google Maps V3で開発していて、地図表示領域の四隅の座標を取得したくて以下のように記述してみた。
var bounds = gmap.getBounds();
// gmapはGoogle Mapsのオブジェクト
四隅の座標なんて簡単!、と思っていたら、値が取得できない。ていうかboundsがundefinedになってる。その直前でgmap.getZoom()出来ているのに!。
検索してみてわかったこと。どうもgetBounds()は、タイルのロードが完了していないと取得できないらしい(英語のサイトになんとなくそんな意味のことが書いてあった)。「addListenerして’bounds_changed’とか’tilesloaded’とかしろ」と書いてある。
結構不便だけど、考えて見れば当然かもしれない。地図の表示領域はブラウザの画面サイズやCSSとも関係してくるだろうから、タイルがロードさえされればそこから判別できるんだけど、と言われれば納得出来る。
納得出来るのと、こんな具合に動いて欲しい、というのは時として矛盾する。