グーグルマップのしくみを探る」カテゴリーアーカイブ

真ん中のタイルを1枚選ぶ:グーグルマップのしくみを探る(5)

前回までは、座標変換について、若干細かく探りました。
グーグルマップといえば、スムーズな地図の動作が特徴ですが、
そのような動作の実現に不可欠なのが、緯度経度とピクセル座標の間の素早い座標変換なのです。

その座標変換は非常にシンプルに行われているのが、前回まででわかって頂けたと思います。
今回は、グーグルのAPIを使わずに、地図画像タイルを作成してみます。

グーグルマップのマップタイルは同じサイズで隙間なく敷き詰められているので、
一枚のタイルの位置が決めれば、他の位置も決まります。

今回はタイルを1枚だけ作成するプログラムをつくることにより、グーグルマップのタイルワークの第一歩を探ります。タイルは地図を表示するフレーム(ビューポート)の中心点を含む1枚とします。
続きを読む

メルカトル図法を導く:グーグルマップのしくみを探る(4)

グーグルマップは、投影法にメルカトル図法を用いています。
今回は、グーグルマップ独自の仕組みというわけではなく、一般によく用いられているメルカトル図法について考えて見ます。

前回では、メルカトルや投影という言葉から連想される「地球の中心に電球があって、そこから映し出される・・・」というイメージは止めましょう、と書きました。実はこのイメージはメルカトル図法の式の導出を難しくしてしまいます。

では、どうしたらメルカトル図法の式を導けるのか、
以下の条件を満足する単なる関数と考えるのです。

条件:
 緯度経度で表される球面(又は楕円面)上の領域は、
  1) 平面直交xy座標に、
  2) 緯線、経線は、それぞれx軸、y軸に平行になるように、
  3) 図形は相似にうつされる。

この条件だけで、導くことができます。では実際に導いてゆきましょう。
続きを読む

緯度の範囲を導く:グーグルマップのしくみを探る(3)

初回では、グーグルマップの独自の平面座標(世界座標と呼んでいます)は、ズームレベル=0のときの256×256ピクセルの1枚の画像がもとになっていることを説明致しました。
この世界座標では、緯度は

 -85.0511287798066 \leq lat \leq 85.0511287798066

の範囲までしかカバーされません。つまり、この数字がグーグルマップの最北端、最南端です。
今回は、この85.0511287798066という値を実際に手計算で導きます。
続きを読む

ピクセル座標とは:グーグルマップのしくみを探る(2)

前回は、緯度経度で表された地球上の位置をどのように、ディスプレイ上のピクセル座標に対応させるかを探ってみました。
しかし、ピクセルとは四角の要素であり、点ではありません。それを、緯度経度で表された点とどのように対応させればよいのでしょうか。

すぐ、思いつくのはピクセル(要素)の中心に対応させる方法ですが、実はそうすると地図画像を扱う上ではともても不便になります。今回はどのようにピクセル座標を定義したらスムーズに対応させられるかを探ってみます。
続きを読む

世界は1枚の画像から : グーグルマップのしくみを探る(1)

グーグルマップは知的好奇心を満たしてくれる最高の対象です。
調べてゆくとおもしろいことが分かりそうです。
基本的なことから少しずつその仕組みを探ってゆきたいと思います。簡単なgoogle maps APIモドキの作成までを目標とします。なお、検証にはGoogle Maps JavaScript API V3 を使います(APIキーが不要なのでとても使いやすいです)。

グーグルマップは画像の地図(ラスターマップ)ですので、地球上の実際の位置と地図画像の位置を対応付ける必要があります。例えば、北緯35度、東経140度を中心にした地図を表示したい場合、その位置が画像のどこに対応するのかを一意的に求めなければなりません。
続きを読む