Tổng quan về Thẻ thông tin 2D

Ví dụ về lộ trìnhThẻ 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 đường kinh tuyến, hướng Tây có thể là dương (ví dụ: 170) còn hướng đô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 điểm đế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
  };
}