ガイドAPIリファレンス
ガイド

メルカトル図法 - HERE Raster Tile API

HERE Raster Tile APIは、正規化されたメルカトル投影法を使用して、球 (地球) の表面のポイントを平面上のポイントにマッピングすることで得られたマップタイルを提供します。 基本的なメルカトル投影式は次のとおりです。

{λ, φ} -> x[-1, 1] y [-1, 1]

この式では、

λ=経度
φ=緯度
x=λ / π
y=ln(tan(π/4 + φ/2)) / π

平面はマップ タイルの正方形のグリッドとして地球を表します。グリッドのサイズは地図のズーム レベルによって異なります。最も低いズーム レベルでは、世界は 1 つのマップ タイルに含まれます。次に高いズーム レベルでは、世界が幅が 2 つのタイル、高さが 2 つのタイル (2 x 2) になっています。さらに次のレベルでは、グリッドは 4 x 4、8 x 8、16 x 16など、特定の地域の最大ズームに達します。

つまり各ズーム レベルにおいて、完全な世界の地図を構成するタイルは、2 の 2 乗にズーム レベルを掛けた値 (2(2*zoom)) に等しいタイルの数となるグリッドを形成します。

2 つの連続するズーム レベルのタイル間の関係は、次のように表現できます。

col1,z+1 = (2*colz) + 1row1,z+1 = (2*rowz) + 1

この式では、

col=タイル グリッドの列数
row=タイルグリッドの行数
z=ズーム レベル

下の図は、これを図示しています。

さまざまなズーム レベルのタイル

この情報を使用して、アプリケーションの特定の地理的位置に対するマップ タイルのグリッド座標 (行と列) を取得できます。次の擬似コードには、完全なアルゴリズムが含まれています。

--- javascript ---
var lat = 52.525439, // Latitude
lon = 13.38727,    // Longitude
z = 12,        // Zoom level
latRad,
n,
xTile,
yTile;

latRad = lat * Math.PI / 180;
n = Math.pow(2, z);
xTile = n * ((lon + 180) / 360);
yTile = n * (1-(Math.log(Math.tan(latRad) + 1/Math.cos(latRad)) /Math.PI)) / 2;

--- output ---
lat_rad = 0.916
n = 4096
xTile = 2200.31 // Column
yTile = 1343.20 // Row

ズーム レベルとタイルの行と列は、マップ タイルのリクエストで「/」文字で区切られた URL 変数として使用できます。これらは zoom/column/row の順序で提供する必要があります。これは [Z]/[X]/[Y] アドレスレンジ コーディング スキームです。

通常、マップ タイル指定の前には他のパス変数があり、その後にはさらにパス変数やクエリ パラメーターが追随する場合もあります。