Map Tiles は単に、世界をインデックス登録されたインデックスに
表示されます。効率的かつ動的に地図データにアクセスし、活用できます
さまざまなスケールで構築されています。Map Tiles API を使用すると、
Google がキュレートした以下を含む、複数のテーマ別地理データセット:
Google のベクトル地形データに基づくロードマップ画像タイル 地図のスタイルを設定できます。
衛星カメラと空中カメラの両方で撮影された正投影撮影 真上から(天底)画像を作成します。
陰影線の等高線マップ。
2D 地図タイルはすべて地理的に参照され、互いに揃っています。選ばれる ビューポートの地理的範囲とズームレベルに基づいてズームレベル 範囲は、ゼロ(世界全体を見渡す)から 22(通りや世界全体を見るため) ブロックなど)が使用されます。
マップのテーマ
次のマップテーマのマップタイルを取得できます。
地図のテーマ | 説明 |
---|---|
ロードマップ | 道路、建物、スポット、行政境界 |
衛星 | 宇宙から撮影された写真画像 |
地形 | 植生などの自然特性を示す等高線地図 |
Map Tiles API から地図タイルをリクエストするには、まず
セッション トークン。セッション トークン
は、地図とビューポートの現在の状態を追跡します。セッションを設定するとき
必要な地図テーマと一致するように mapType
値を設定する必要があります。
その後、各リクエストにセッション トークンを含めて、
Map Tiles API
ビューポート情報のリクエスト
ビューポートは、世界のシーンを構成するボックスのサイズを定義します。ビューポート information リクエストにより、マップ タイルの詳細情報が 現在のビューポートです。ビューポートの情報をリクエストするのは、 存在していないズームレベルで画像をリクエストしないようにします。
たとえば、ほとんどの都市ではズームレベル 22 の画像が表示されますが、海の画像は表示されない 結局は何もない青い四角が表示されます
ビューポート リクエストは、次の形式の HTTPS GET リクエストです。
curl "https://tile.googleapis.com/tile/v1/viewport?session=YOUR_SESSION_TOKEN &key=YOUR_API_KEY &zoom=zoom &north=north &south=south &east=east &west=west"
リクエストには次のフィールドが含まれます。
zoom
- ビューポートのズームレベル。
north
、south
、east
、west
- ビューポート内の最も遠い北、南、東、西のポイント。 度。北と南は (-90,90) の範囲内、東と西は 範囲(-180, 180)を指定します。180 度子をまたぐ境界を表現するには、西を 正(例: 170)と東(例: -170)を指定できます。すべて パラメータは必須です。
ビューポート情報レスポンス
ビューポートのレスポンスで、どのエリアに画像があるか、どのズームでしたかがわかります。 できます。ビューポート情報レスポンスの形式は次のとおりです。
{
"copyright": "Map data ©2023",
"maxZoomRects": [
{
"maxZoom": 19,
"north": 90,
"south": -90,
"east": 180,
"west": -180
},
{
"maxZoom": 9,
"north": 90,
"south": -90,
"east": 180,
"west": -180
},
{
"maxZoom": 14,
"north": 84.375,
"south": -84.375,
"east": 180,
"west": -180
}, ...
]
}
レスポンスの本文には次のフィールドがあります。
copyright
- キャンペーンの作成時に地図に表示する帰属文字列が含まれます。 ロードマップと衛星画像を表示できるようになりました詳しくは、 Map Tiles API ポリシー。
maxZoomRect
- 現在の画像と重なる境界四角形の配列が含まれます 表示されなくなります。各長方形内で使用可能な最大ズームレベルも含まれます。
タイル座標の関数
ほとんどのプログラミング言語で、変換用のツール(単純な関数)を利用できる
緯度と経度のペアから特定のズームレベルのタイル座標に変換できます。
次の JavaScript コードの例では、最初に
latLng
を点に変換し、さらに点からタイル座標へ。
var TILE_SIZE = 256;
function fromLatLngToPoint(latLng) {
var mercator = -Math.log(Math.tan((0.25 + latLng.lat() / 360) * Math.PI));
return {
x: TILE_SIZE * (latLng.lng() / 360 + 0.5),
y: TILE_SIZE / 2 * (1 + mercator / Math.PI)
};
}
function fromLatLngToTileCoord(latLng, zoom) {
var point = fromLatLngToPoint(latLng);
var scale = Math.pow(2, zoom);
return {
x: Math.floor(point.x * scale / TILE_SIZE),
y: Math.floor(point.y * scale / TILE_SIZE),
z: zoom
};
}