地圖圖塊只是全球除以索引的格線而已。這樣一來,您就能有效率地存取及使用地圖資料,並動態調整多種地圖大小。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
- 包含一個歸因字串,當您顯示道路圖和衛星圖塊時,必須在地圖上顯示。詳情請參閱地圖圖塊 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
};
}