2009-09-20

Google Static Maps API で表示した画像の端っこの緯度経度を調べる

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Google Static Maps APIで地図画像を作成できますが、作成した画像の一番上やら右端などがどんな緯度経度なのかを知りたいときがあります。

方法としては、
http://da-studio.blogspot.com/2008/04/google-static-maps-api.html
を見ればわかります。

理論に関しては、まったくわからないですが
ズームサイズと画像サイズから、地図に表示されている
(地図の一番上の座標)-(地図の一番下の座標)
の値がわかるようです。

これがわかれば、中心座標に求めれた数値の半分を足したり引いたりすれば、端っこの座標を求めることができるのです。

リンク先にphpのサンプルコードがあるので、こちらではpythonのコードを書いてみます。

#画像縦サイズ:ysize
#画像縦サイズ:xsize
#画像中心緯度:clat
#画像中心軽度:clon
#縦横の表示域を算出
lx=float(xsize)/pow(2,float(zoom))
ly=float(ysize)/pow(2,float(zoom))

#小数点以下をいい感じに丸める処理
lattop = round((float(clat)+ly/2)*1000000)/1000000
latbtm = round((float(clat)-ly/2)*1000000)/1000000
lontop = round((float(clon)+ly/2)*1000000)/1000000
lonbtm = round((float(clon)-ly/2)*1000000)/1000000


表示域を算出するときに、念のため値をfloatで囲んでおくのが良さげです。
何も考えずに使っていたら、それぞれintとして取り扱うコードになっていて、
算出結果が0とかになったりしたもので。

0 件のコメント: