Thẻ thông tin trong bản đồ chỉ đơn giản là việc phân chia thế giới thành nhóm được lập chỉ mục
lưới. Cho phép bạn truy cập và sử dụng dữ liệu bản đồ một cách hiệu quả và linh hoạt
ở nhiều tỷ lệ bản đồ. API Thẻ thông tin của bản đồ cho phép bạn truy cập vào
nhiều tập dữ liệu địa lý theo chủ đề, bao gồm cả nội dung do Google tuyển chọn:
Ô hình ảnh lộ trình dựa trên dữ liệu địa hình vectơ với tạo kiểu bản đồ.
Chụp ảnh chỉnh hình được chụp bằng cả camera vệ tinh và camera trên không hình ảnh từ trên xuống (thấp nhất) của trái đất.
Bản đồ đường đồng mức sườn đồi.
Tất cả các Ô bản đồ 2D đều được tham chiếu địa lý và được căn chỉnh với nhau. Đã chọn dựa trên phạm vi địa lý của chế độ xem và mức thu phóng. Mức thu phóng phạm vi từ 0 (để xem toàn bộ thế giới) đến 22 (để xem đường phố và khối).
Chủ đề bản đồ
Bạn có thể tải ô bản đồ cho các chủ đề bản đồ sau.
Chủ đề bản đồ | Mô tả |
---|---|
Lộ trình | Đường, toà nhà, địa điểm yêu thích và ranh giới chính trị |
Vệ tinh | Ảnh chụp từ không gian |
Địa hình | Bản đồ đường viền thể hiện các đối tượng tự nhiên như thực vật |
Để yêu cầu ô bản đồ từ API Thẻ thông tin bản đồ, trước tiên bạn phải yêu cầu
mã thông báo phiên. Mã thông báo phiên
theo dõi trạng thái hiện tại của bản đồ và chế độ xem của bạn. Khi bạn thiết lập phiên của mình
mã thông báo, bạn phải đặt giá trị mapType
để khớp với chủ đề bản đồ mà bạn muốn.
Sau đó, bạn phải đưa mã thông báo phiên đó vào mỗi yêu cầu của mình để
API Bản đồ ô.
Yêu cầu thông tin khung nhìn
Khung nhìn xác định kích thước của hộp đóng khung cảnh thế giới. Khung nhìn yêu cầu thông tin trả về thông tin chi tiết về các ô bản đồ tạo nên khung nhìn hiện tại. Lý do bạn yêu cầu thông tin về khung nhìn là để đảm bảo để bạn tránh yêu cầu hình ảnh ở mức thu phóng không tồn tại.
Ví dụ: hầu hết các thành phố đều có hình ảnh ở mức thu phóng 22, nhưng không phải là đại dương vì nó sẽ chỉ hiển thị các hình vuông màu xanh dương không có nét nào.
Yêu cầu khung nhìn là một yêu cầu HTTPS GET trong biểu mẫu sau.
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"
Yêu cầu chứa các trường sau:
zoom
- Mức thu phóng của khung nhìn.
north
,south
,east
,west
- Các điểm xa nhất về phía bắc, nam, đông và tây trong chế độ xem, được thể hiện bằng độ. Hướng Bắc và Nam phải nằm trong khoảng (-90,90), phía Đông và Tây phải nằm trong khoảng (-90,90). phạm vi (-180, 180). Để thể hiện ranh giới băng qua kinh tuyến 180 độ, hướng Tây có thể là dương (ví dụ: 170) còn đông có thể là âm (ví dụ: -170). Tất cả tham số là bắt buộc.
Phản hồi thông tin về khung nhìn
Phản hồi khung nhìn cho bạn biết khu vực nào có hình ảnh và mức thu phóng cấp độ. Phản hồi thông tin về khung nhìn có dạng như sau.
{
"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
}, ...
]
}
Nội dung phản hồi chứa các trường sau.
copyright
- Chứa chuỗi ghi nhận tác giả mà bạn phải hiển thị trên bản đồ của mình khi bạn lộ trình hiển thị và ô vệ tinh. Để biết thêm thông tin, hãy xem Chính sách về API Thẻ thông tin của bản đồ.
maxZoomRect
- Chứa một mảng các hình chữ nhật giới hạn chồng lên nhau khung nhìn. Đồng thời chứa mức thu phóng tối đa có sẵn trong mỗi hình chữ nhật.
Hàm toạ độ ô
Các công cụ (hàm đơn giản) có sẵn trong hầu hết các ngôn ngữ lập trình để chuyển đổi
từ cặp vĩ độ/kinh độ đến toạ độ ô ở một mức thu phóng cụ thể.
Hãy xem xét ví dụ về mã JavaScript sau đây, mã đầu tiên chuyển đổi từ một
latLng
đến một điểm rồi từ một toạ độ đến ô.
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
};
}