地圖圖塊只是將世界劃分為索引網格。您可以透過多種地圖比例,有效率地動態存取及運用地圖資料。Map Tiles API 可讓您存取多個主題地理資料集,包括 Google 精選的:
根據向量地形資料和 Google 地圖樣式繪製的路線圖圖片圖塊。
由衛星和機載相機拍攝的正射攝影,可提供地球的俯視 (天底) 圖像。
暈渲等高線地圖。
2D 地圖圖塊皆已參照地理資訊,並相互對齊。系統會根據可視區域的地理範圍和縮放等級,選取要顯示的標籤。縮放等級介於 0 (查看整個世界) 到 22 (查看街道和街區) 之間。
地圖主題
您可以取得下列地圖主題的地圖圖塊。
| 地圖主題 | 說明 |
|---|---|
| 藍圖 | 道路、建築物、搜尋點和政治界線 |
| 衛星 | 從太空拍攝的攝影圖像 |
| 地形 | 顯示植被等自然景觀的等高線地圖 |
如要透過 Map Tiles API 要求地圖圖塊,您必須先要求工作階段符記。工作階段符記會追蹤地圖和可視區域的目前狀態。設定工作階段符記時,請務必將 mapType 值設為符合所需的地圖主題。接著,您必須在傳送至 Map Tiles API 的每項要求中加入工作階段符記。
可視區域資訊要求
可視區域定義了世界場景的框線大小。可視區域資訊要求會傳回構成目前可視區域的地圖圖塊詳細資料。要求可視區域資訊,是為了避免要求不存在的縮放等級圖像。
舉例來說,大多數城市都有縮放等級 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) 範圍內。如要表示跨越反子午線的邊界,西經可以為正值 (例如 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
};
}