Maps SDK for Android では、次の座標系が使用されています。
- 緯度と経度の値。世界中のポイントを一意に参照します。Google では世界測地系 WGS84 規格を使用しています。
- 世界座標。地図上のポイントを一意に参照します。
- ピクセル座標。特定のズームレベルで、地図上の特定のピクセルを参照します。
- タイル座標。特定のズームレベルで地図上の特定のタイルを参照します。
世界座標
API は、世界のある地点を地図上の場所に変換する必要がある場合、まず緯度と経度の値を世界座標に変換します。API は、メルカトル図法を使用してこの変換を実行します。
ピクセル座標(下記参照)の計算における便宜上、ズームレベル 0 の地図はベース タイルサイズの単一タイルであると想定されています。次に、ズームレベル 0 のピクセル座標に対応する世界座標を定義します。これを行うには、投影法を使用して緯度と経度をこのベースタイル上のピクセル位置に変換します。この世界座標は、地図の投影法の原点から特定の位置までを計測した浮動小数点値です。この値は浮動小数点値であるため、表示されている地図画像の現在の解像度より高精度にできます。世界座標は、現在のズームレベルから独立しているとも言えます。
Google Maps の世界座標はメルカトル図法の原点(地図の北西の隅、経度 180 度、緯度約 85 度)から測定され、x
の方向は東(右)に、y
の方向は南(下)に増加します。Google マップの基本メルカトル タイルは 256 x 256 ピクセルであるため、使用可能な世界座標空間は {0-256}, {0-256}
です。
メルカトル図法では、経度を表す幅は有限ですが、緯度を表す高さは無限です。そこで、最終的な地図形状が正方形になるように、メルカトル図法を利用して約 +/- 85 度で基本地図の画像を切り取っています。これにより、タイル選択が簡単になります。北極や南極に非常に近い位置などをプロットした場合、投影法により基本地図の使用可能座標外の世界座標が生成される可能性があります。
ピクセル座標
世界座標は所定の投影法の絶対位置を反映しますが、ピクセル座標は、特定のズームレベルで地図上の特定のピクセルを参照します。これらのピクセル座標は、次の式を使用して計算されます。
pixelCoordinate = worldCoordinate * 2zoomLevel
上記の式が示すように、ズームレベルを 1 つ高くするたびに x
方向と y
方向の両方で 2 倍に拡大されます。したがって、ズームレベルが 1 つ上がると、解像度が前のレベルの 4 倍になります。たとえば、ズームレベル 1 では、地図は 4 つの 256x256 ピクセルタイルで構成され、ピクセル空間は 512x512 になります。ズームレベル 19 では、地図上の各 x
および y
ピクセルは、0~256 * 219 の間の値を使用して参照できます。
世界座標は地図のタイルサイズに基づいているため、ピクセル座標の整数部を使用して現在のズームレベルによる該当場所の正確なピクセルを特定できます。ズームレベル 0 の場合、ピクセル座標は世界座標と等しくなります。
これで、各ズームレベルの地図上の各位置を正確に示すことができるようになりました。Maps SDK for Android は、ズームレベル、地図の中心(LatLng
)、および含まれる DOM 要素のサイズが指定されると、ビューポートを構成し、この境界ボックスをピクセル座標に変換します。次に、API は指定されたピクセル境界内に入るすべての地図タイルを論理的に決定します。これらの地図タイルはそれぞれタイル座標を使用して参照されます。これにより、地図画像の表示が非常に簡単になります。
タイル座標
ズームレベルが高い場合、API ですべての地図画像を一度に読み込むことはできません。代わりに API は、各ズームレベルの画像を、地図タイルのグループに分割します。このタイルは、アプリケーションが判別する順序で論理的に配置されます。地図を新しい位置にスクロールする、または新しいズームレベルにスクロールすると、API はピクセル座標を使用して必要なタイルを決定し、そのピクセル座標の値を取得するタイルのグループに変換します。これらのタイル座標は、指定されたポイントの画像を含むタイルを論理的に判別しやすくするスキームを使用して割り当てられます。
Google マップのタイルは、ピクセルの原点と同じ原点から番号が振られます。Google によるメルカトル図法の実装では、原点タイルは常に地図の北西端になり、x
値は西から東に増分し、y
値は北から南に増分します。タイルは、この原点からの x,y
座標を使用してインデックスが付けられます。たとえば、ズームレベル 2 で地球が 16 個のタイルに分割された場合は、各タイルは一意の x,y
ペアで参照できます。
ピクセル座標をタイルサイズ(256)で除算した数値の整数部分を使用することで、間接的に現在のズームレベルのタイル座標を生成できます。
例
次の例は、さまざまなズームレベルで、イリノイ州シカゴの緯度 / 経度の値、世界座標、ピクセル座標、およびタイル座標を示しています。ズーム コントロールを使用して、さまざまなズームレベルの座標値を確認できます。
座標の計算方法は、コードを表示すると確認できます。