2009-09-30

Google Static Maps APIのいい感じのズームサイズを決定する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Google Static Maps APIを使っているとある2点が一画面に収まるような感じのズームサイズを決定したくなることがあります。

pythonで以下のような感じで求められそうです。

#2つの指定座標が収まるズームサイズを求める
#sizeは画像サイズ(正方形地図を利用としています)
# 長方形の場合は、二つの値を受け取ってそれぞれに対して
# zoomを計算して小さい方を選べばよいと思います。
#x1,y1はポイント1の緯度経度
#x2,y2はポイント2の緯度経度
def get_zoom_size(size,x1,y1,x2,y2):
dx = float(x1)-float(x2)
dy = float(y1)-float(y2)
d=math.sqrt(dx*dx+dy*dy)
if d==0:
return 14
zoom = math.log(float(size)/d)/math.log(2)
return int(math.floor(zoom))

floatやらintやらがこなれていない感じがビンビンしてますが、なんとなく出ている感じがするので、まぁよしとしましょう。
これは、
Google Static Maps API で表示した画像の端っこの緯度経度を調べる
で紹介した以下の式を変形させて出してみました。
lx=float(xsize)/pow(2,float(zoom))

0 件のコメント: